Невозможно запустить аналитическую функцию в Sql Server - PullRequest
0 голосов
/ 09 января 2012

В Oracle это работает хорошо.Запрос для оракула следующий:

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

Выше запроса при запуске дать ОШИБКА: неверный синтаксис рядом с «отличным».

делая Query маленьким, я пытался

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 

ОШИБКА: неправильный синтаксис рядом с «отчетливым»

Я пытался также удалить часть Cast, но та же ошибка снова появляется n снова

Может кто-нибудь помочь .......

1 Ответ

1 голос
/ 09 января 2012

Вы не можете использовать count(distinct col) в предложении over.Вам нужно будет выполнить подзапрос, который выполняет count(distinct col) со старомодным group by, чтобы сделать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...