#sql #sql-server
Вопрос:
Я получил следующую инструкцию SQL, результаты которой приведены в первой таблице ниже. Моя цель-получить результат, как показано в нижней таблице. Как мне этого добиться?
SELECT tabDynValues.Dynamic_Field_ID,
tabDynValues.Record_ID,
CASE Dynamic_Field_ID
WHEN 755 THEN tabDynValues.Value_Char
END Filiale,
CASE Dynamic_Field_ID
WHEN 756 THEN tabDynValues.Value_Double
END AD,
CASE Dynamic_Field_ID
WHEN 757 THEN tabDynValues.Value_Double
END Vertrieb,
CASE Dynamic_Field_ID
WHEN 758 THEN tabDynValues.Value_Double
END Expansion
FROM CI_AM_Dynamic_Field_Value tabDynValues
WHERE tabDynValues.Activity_ID = 100612
AND tabDynValues.Dynamic_Field_ID IN (SELECT Dynamic_Field_ID
FROM CI_AM_Dynamic_Field
WHERE Dynamic_Field_Group_ID = 238)
ORDER BY tabDynValues.Record_ID, tabDynValues.Dynamic_Field_ID
Dynamic_Field_ID | Идентификатор записи | Filiale | реклама | Vertrieb | Расширение |
---|---|---|---|---|---|
755 | 1 | 1111 Mitte | нулевой | нулевой | нулевой |
756 | 1 | нулевой | 123 | нулевой | нулевой |
757 | 1 | нулевой | нулевой | 56 | нулевой |
758 | 1 | нулевой | нулевой | нулевой | 45 |
755 | 2 | 2222 Ost | нулевой | нулевой | нулевой |
756 | 2 | нулевой | нулевой | 120 | нулевой |
755 | 3 | 3333 Запад | нулевой | нулевой | нулевой |
756 | 3 | нулевой | 123 | нулевой | нулевой |
757 | 3 | нулевой | нулевой | 456 | нулевой |
758 | 3 | нулевой | нулевой | нулевой | 789 |
Dynamic_Field_ID | Идентификатор записи | Filiale | реклама | Vertrieb | Расширение |
---|---|---|---|---|---|
1 | 1111 Mitte | 123 | 56 | 45 | |
2 | 2222 Ost | 120 | нулевой | нулевой | |
3 | 3333 Запад | 123 | 456 | 789 |
Комментарии:
1. Сделайте ГРУППУ! !
2. @jarlh ГРУППА BY здесь не работает.
3. @Raphnika, определенно, ГРУППА работает здесь.
Ответ №1:
Просто добавьте a GROUP BY
и оберните свои выражения регистра внутри MAX
функции:
SELECT
tabDynValues.Record_ID,
MAX(CASE Dynamic_Field_ID WHEN 755 THEN tabDynValues.Value_Char END) Filiale,
MAX(CASE Dynamic_Field_ID WHEN 756 THEN tabDynValues.Value_Double END) AD,
MAX(CASE Dynamic_Field_ID WHEN 757 THEN tabDynValues.Value_Double END) Vertrieb,
MAX(CASE Dynamic_Field_ID WHEN 758 THEN tabDynValues.Value_Double END) Expansion
FROM CI_AM_Dynamic_Field_Value tabDynValues
WHERE tabDynValues.Activity_ID = 100612 AND tabDynValues.Dynamic_Field_ID IN (
SELECT Dynamic_Field_ID
FROM CI_AM_Dynamic_Field
WHERE Dynamic_Field_Group_ID = 238
)
GROUP BY tabDynValues.Record_ID
ORDER BY tabDynValues.Record_ID