我得到了下面的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 Record_ID 分公司 广告 Vertrieb 扩张 tbody><<tr>755 1 1111米 空 空 空 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 表类>
只需添加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