Выражение GROUP BY SUM CASE SQL Сервер - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу сгруппировать по номеру учетной записи, но у меня возникают проблемы, если я получаю несколько RATE_CD для учетной записи - я получаю NONCOMPLIANT_CNT, равный 2, но я хочу, чтобы это было только 1 на учетную запись, даже если их больше 1 RATE_CD.

Ниже приведена SQL, с которой я играюсь, есть идеи о том, как я могу вернуть NONCOMPLIANT_CNT для каждой учетной записи, и не сворачивать счет, если существует более 1 RATE_CD?

SELECT ID
    ,ACCOUNT_NBR SUM(CASE 
            WHEN GROUP_CD = 'RED'
                AND TYPE_CD IN ('CHK')
                THEN 1
            ELSE 0
            END) AS 'COMPLIANT_CNT'
    ,SUM(CASE 
            WHEN GROUP_CD = 'RED'
                AND TYPE_CD IN (
                    'CN'
                    ,'RN'
                    )
                AND RATE_CD <> 'BLK'
                THEN 1
            ELSE 0
            END) AS 'NONCOMPLIANT_CNT'
    ,SUM(CASE 
            WHEN GROUP_CD = 'RED'
                AND TYPE_CD IN (
                    'CN'
                    ,'RN'
                    ,'CHK'
                    )
                THEN 1
            ELSE 0
            END) AS 'TOTAL_CNT'
FROM DETAIL
LEFT OUTER JOIN RATE_LOOKUP ACCOUNT_NBR = ACCOUNT_NBR
GROUP BY ID
    ,ACCOUNT_NBR
    ,RATE_CD
...