2014-10-03 150 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

相关问题