Отличительные значения, несмотря на столбец в выражении регистра, создающий нечеткие значения - PullRequest
1 голос
/ 16 октября 2019

Я хочу получить одну строку для каждого APP_ID, но я выбираю Operating_System в операторе case, что означает, что для одного и того же APP_ID возвращаются 3 строки.

SELECT DISTINCT [APP_ID], [APP_NAME], [BATCH_ID], [Start_Date], 
       CASE 
         WHEN [Operating_System] LIKE '%Windows%' 
            then COUNT([HOSTNAME])  
         ELSE '' 
       END AS 'Windows',  
       CASE 
         WHEN [server_pam_Operating_System] LIKE '%Linux%' 
           then COUNT([HOSTNAME]) 
         ELSE '' 
       END AS 'Linux' 
FROM [dbo].[table a]
WHERE [APP_ID] = 'APP-99'
GROUP BY [APP_ID], [APP_NAME], [BATCH_ID], [Start_Date]

Фактические результаты:

APP_ID  APP_NAME BATCH_ID   Start_Date  Windows Linux
APP-99  APS to define   to define   0   49
APP-99  APS to define   to define   3   0
APP-99  APS to define   to define   7   0

Ожидаемые результаты:

APP_ID  APP_NAME BATCH_ID   Start_Date  Windows Linux
APP-99  APS to define   to define   10  49

1 Ответ

2 голосов
/ 16 октября 2019

нет необходимости различать и использовать агрегирование перед регистром

    SELECT  [APP_ID], [APP_NAME], [BATCH_ID], [Start_Date],         
    sum(CASE WHEN [Operating_System] LIKE '%Windows%' then 1  
    ELSE 0 END) AS Windows,
    sum(CASE WHEN [server_pam_Operating_System] LIKE '%Linux%' 
    then 1 ELSE 0) END AS Linux    
      FROM [dbo].[table a]
      WHERE [APP_ID] = 'APP-99'
      GROUP BY [APP_ID], [APP_NAME], [BATCH_ID], [Start_Date]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...