Строки группы SQL по условию - PullRequest
0 голосов
/ 16 октября 2019

Мне нужно объединить 3 строки в одну со следующим условием - если хотя бы один J существует в любом из столбцов, то все столбцы должны быть перезаписаны с J. Если все NI должны получить одну строку со всеми N.

Я думаю, что-то вроде -

SELECT BRGNR
, AFTLST
,CASE WHEN EGMK IN ('J','N') THEN 'J' ELSE EGMK END EGMK
,CASE WHEN TDMK IN ('J','N') THEN 'J' ELSE TDMK END TDMK
,CASE WHEN UDMK IN ('J','N') THEN 'J' ELSE UDMK END UDMK
, CASE WHEN FUMK IN ('J','N') THEN 'J' ELSE FUMK END FUMK
  FROM IF.TIF_BRUGER_BT  
GROUP BY BRGNR

Но проблема в том случае, когда у меня есть все N, все значения все равно будут перезаписаны в J, и мне нужно иметь N, если все значенияявляются N

Original result

1 Ответ

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

Я собираюсь интерпретировать вопрос следующим образом:

  • Если a в столбце есть 'J', то результат будет 'J'.
  • В противном случае, если всеравны 'N', то в результате получим 'N'.

Я предполагаю, что единственными значениями являются 'J' и 'N'. Я предполагаю, что 'J' -> «да» и 'N' -> «нет», и вы хотите «да», если любое значение равно «да».

Если это так, вы можете использовать MIN():

SELECT BRGNR, AFTLST,
       MIN(EGMK), MIN(TDMK), MIN(UDMK), MIN(FUMK)
FROM IF.TIF_BRUGER_BT  
GROUP BY BRGNR, AFTLST
...