2014-10-03 74 views
0

我有一個查詢,用於在MS Access中精美地工作,我試圖將它作爲視圖帶入SQL Server。問題是兩個字段從其他視圖中獲得它們的價值。這些視圖非常好。我試圖拿走這兩個領域並從他們那裏得到一個百分比評級。查詢種類如下所示:別名在Access中工作,但不是在SQL Server中工作

SELECT dbo.v_IPQueryTotal, 
    GEOLOC.City, 
    GEOLOC.State, 
    dbo.v_IPQueryTotal   AS [Total], 
    dbo.v_IPHits    AS [Confirmed], 
    [Confirmed]/[Total] * 100 AS Percentage 
FROM GEOLOC, 
    v_IPQueryTotal; 
+1

由於'dbo.v_IPQueryTotal'是表名而不是列名,因此您的查詢在兩個數據庫中都不起作用。 – 2014-10-03 14:00:50

+0

看起來您正在選擇整個視圖而不是視圖中的一個字段。 'dbo.v_IPQueryTotal'應該是'dbo.v_IPQueryTotal.SOMETHING'。 – 2014-10-03 14:03:36

+0

非常抱歉,把它寫錯了。忘了包括領域,我的壞。所以讓我給你修正代碼: – bbcompent1 2014-10-03 14:22:10

回答

0

無法在使用SQL Server的同一語句中內聯列引用別名。您需要直接引用的列是這樣的:

SELECT 
    dbo.v_IPQueryTotal, 
    GEOLOC.City, 
    GEOLOC.State, 
    dbo.v_IPQueryTotal.AllHits AS [Total], 
    dbo.v_IPHits.IPHitCount AS [Confirmed], 
    dbo.v_IPHits.IPHitCount/dbo.v_IPQueryTotal.AllHits * 100 AS Percentage 

FROM 
    GEOLOC, v_IPQueryTotal 

另一種解決方案是使用內源性表,並引用外部查詢其列:

SELECT 
    tmp.*, 
    tmp.Confirmed/tmp.Total * 100 AS Percentage 

FROM 
(
    SELECT 
     dbo.v_IPQueryTotal, 
     GEOLOC.City, 
     GEOLOC.State, 
     dbo.v_IPQueryTotal.AllHits AS [Total], 
     dbo.v_IPHits.IPHitCount AS [Confirmed] 

    FROM 
     GEOLOC, v_IPQueryTotal 
) tmp 

居然沒有任何連接定義條件,使這導致了笛卡兒的產品,這可能不是你所期望的。

+0

其實有一個連接,我正在做的查詢要複雜得多;我只是因胃灼熱而試圖找出如何計算這個百分比。 :) – bbcompent1 2014-10-06 10:35:08

+0

啊,好的。只是爲了讓我和其他遇到這個問題的人清楚:我的建議是否有用? – 2014-10-08 16:07:18

+0

是的,它確實是,我沒有正確地調用視圖,這反過來使我感到悲傷。 – bbcompent1 2014-10-08 20:22:45

相關問題