无法在Sql Server中运行分析功能
问题描述:
在Oracle中运行良好。对于Oracle查询如下无法在Sql Server中运行分析功能
SELECT TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID, TERR_ID, MERGE_KEY, count(distinct TERR_ID) over (partition by TEAM_ID,LEVEL_ID,FF_ID,MODULE_ID)||' of '||count(distinct TERR_ID) over (partition by TEAM_ID,LEVEL_ID,FF_ID) as MISMATCH_TERR_COUNT_IN_FF FROM SCN7BBFE80210E04E2F88653A.PA83FB9BD57E044618B7AC86A;
但对于SQL Server中,我得到一个错误
我创建表列名作为TEAM_ID,LEVEL_ID,FF_ID,MODULE_ID,TERR_ID,MERGE_KEY然后插入值代入表...
insert into PA83FB9BD57E044618B7AC86A values('3',1,'YH','PERF','3XBDA3',1)
insert into PA83FB9BD57E044618B7AC86A values('3',1,'YH','PERF','3XAJA3',1)
这是SQL查询...
SELECT TEAM_ID ,
LEVEL_ID ,
FF_ID ,
MODULE_ID ,
TERR_ID ,
MERGE_KEY ,
ISNULL(CAST(COUNT(DISTINCT TERR_ID) OVER (PARTITION BY TEAM_ID,
LEVEL_ID, FF_ID, MODULE_ID) AS NVARCHAR(MAX)),
'') + ' of '
+ ISNULL(CAST(COUNT(DISTINCT TERR_ID) OVER (PARTITION BY TEAM_ID,
LEVEL_ID, FF_ID) AS NVARCHAR(MAX)),
'') AS MISMATCH_TERR_COUNT_IN_FF
FROM dbo.PA83FB9BD57E044618B7AC86A
以上阙ry运行时出现错误:'distinct'附近的语法不正确。
使查询小我试图
SELECT TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID, TERR_ID, MERGE_KEY, cast(count(distinct TERR_ID) OVER(PARTITION BY TEAM_ID, LEVEL_ID, FF_ID, MODULE_ID) AS MISMATCH_TERR_COUNT_IN_FF FROM dbo.PA83FB9BD57E044618B7AC86A
错误:附近有语法错误“独立的”
我试图通过消除铸件很好,但同样的错误再次出现ň再次
任何人可以帮助.......
答
您不能在over
子句中使用count(distinct col)
。你必须做一个子查询,count(distinct col)
与老式的group by
做你想做的事情。
+1
请参阅:https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-不支持'count(distinct ...)over(...)'的官方词汇的distinct-clause-for-aggregate-functions。 – 2012-01-09 20:11:01
请清理换行符。我添加了代码标签,但我不打算通过整个事情来解析,以添加中断和间距。 – JNK 2012-01-09 16:21:51
我使用SQL提示执行了SQL,但他的第二个SQL查询无效... – SteveC 2012-01-09 16:26:59