2017-01-18 4 views
0

Это мои текущие результаты моего запроса: enter image description hereОбъединение строк в SQL с помощью сазе

Мне нужно переименовать столбец триместров «FirstTri», если значение триместр либо «FirstVisit1HealthCenter» или «FirstVisit1OtherProvider» , Если значения в столбце Триместр - это «FirstVisit2HealthCenter» или «FirstVisit2OtherProvider», то столбец Триместра «SecondTri». То же самое со строками с «3». Столбец будет «ThirdTri».

Значения в столбце «Первый визит с центром работоспособности» не являются нулевыми, эти значения должны быть возвращены. Значения в столбце «Первый визит с другим провайдером», которые не являются нулевыми, также необходимо сохранить.

enter image description here

Это SELECT утверждение, что у меня есть, но он постоянно возвращается значения, которые NULL

SELECT DISTINCT 6 + ROW_NUMBER() OVER (ORDER BY Trimester) AS Line, 
     CASE WHEN Trimester IN ('FirstVisit1HealthCenter', 'FirstVisit1OtherProvider') THEN 'First Trimester' 
      WHEN Trimester IN ('FirstVisit2HealthCenter', 'FirstVisit2OtherProvider') THEN 'Second Trimester' 
      WHEN Trimester IN ('FirstVisit3HealthCenter', 'FirstVisit3OtherProvider') THEN 'Third Trimester' END AS EarlyEntry, 
     CASE WHEN [First Visit with Health Center] IS NOT NULL THEN [First Visit with Health Center] END AS [First Visit with Health Center], 
     CASE WHEN [First Visit with Other Provider] IS NOT NULL THEN [First Visit with Other Provider] END AS [First Visit with Other Provider] 
--SELECT * 
FROM #tblSubResult 

Как я НЕ возврата строки, которые являются NULL, но возвращать только 3 строки ?

ответ

1

Вы могли бы мог сделать ваш запрос суб-запрос и Sum столбцы:

select EarlyEntry, 
sum([First Visit with Health Center]) as [First Visit with Health Center], 
sum([First Visit with Other Provider]) as [First Visit with Other Provider] 
from (
     SELECT DISTINCT 6 + ROW_NUMBER() OVER (ORDER BY Trimester) AS Line, 
       CASE WHEN Trimester IN ('FirstVisit1HealthCenter', 'FirstVisit1OtherProvider') THEN 'First Trimester' 
        WHEN Trimester IN ('FirstVisit2HealthCenter', 'FirstVisit2OtherProvider') THEN 'Second Trimester' 
        WHEN Trimester IN ('FirstVisit3HealthCenter', 'FirstVisit3OtherProvider') THEN 'Third Trimester' END AS EarlyEntry, 
       CASE WHEN [First Visit with Health Center] IS NOT NULL THEN [First Visit with Health Center] END AS [First Visit with Health Center], 
       CASE WHEN [First Visit with Other Provider] IS NOT NULL THEN [First Visit with Other Provider] END AS [First Visit with Other Provider] 
     --SELECT * 
     FROM #tblSubResult) a 
     group by EarlyEntry 
+0

Отлично! Благодаря! –

+0

Нет проблем (не забудьте проголосовать за меня :-)) – MikeS