SQL将多行压缩成一行



我得到了下面的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_IDRecord_ID分公司广告Vertrieb扩张tbody><<tr>75511111米空空空7561空123空空7571空空56空7581空空空4575522222 Ost空空空7562空空120空75533333年西方空空空7563空123空空7573空空456空7583空空空789

只需添加GROUP BY并将您的case表达式包装在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

最新更新