2012-01-09 15 views
0

Oracleでは、正常に動作しています。私はその後、TEAM_ID、LEVEL_ID、FF_ID、MODULE_ID、TERR_ID、MERGE_KEYとしてColumnNameを持つテーブルを作成し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; 

を次のようにOracleのクエリがあるしかし、SQL Server用、私はエラーに

を得ているに値を挿入テーブル...

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 

QUEの上実行時にエラーが発生します。エラー: 'distinct'の近くに構文が正しくありません。 「明確な」

近くに不正な構文私もキャスト一部を除去してみましたが、同じエラーが再びnは再び

表示され、誰が助けることができます:私はERRORが

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 

を試みたクエリを小さくすること

.......

+1

改行を取り除いてください。コードタグを追加しましたが、ブレークとスペーシングを追加するためにそのすべてを解析するつもりはありません。 – JNK

+0

SQLプロンプトを使用してSQLを実行しましたが、2番目のSQLクエリは無効です... – SteveC

答えて

1

over句にcount(distinct col)を使用することはできません。あなたは何をしたいのかを尋ねるのにgroup byという古い形式のcount(distinct col)を実行するサブクエリを実行する必要があります。

+1

参照:https://connect.microsoft.com/SQLServer/feedback/details/254393/over-clause-enhancement-request-サポートされていない 'count(distinct ...)over(...) 'の正式な単語のdistinct-clause-for-aggregate-functions –