场景描述:需要与南向系统建立接口,提供的数据中按行显示多台设备的多个指标(CPU、内存、温度),南向系统需要将每台设备的不同指标数据在同一行显示,即多行转一行多列。
方法一:pivot
SELECT *
FROM (SELECT IP,NAME,ID,VALUED FROM TAB_TEST) TT
PIVOT(MAX(VALUED)
FOR ID IN(112, 113,114)) T
方法二:case when
因为南向系统要求对查询数据使用特殊分隔符,所以暂时不不适用方法一
使用case when实现
SELECT TT.IP,
TT.NAME,
MAX(CASE TT.ID
WHEN 112 THEN
TT.VALUE
END) MEMORY,
MAX(CASE TT.ID
WHEN 113 THEN
TT.VALUE
END) CPU,
MAX(CASE TT.ID
WHEN 114 THEN
TT.VALUE
END) TEMPERATURE
FROM (SELECT IP, NAME, ID, VALUE FROM tab_test WHERE XXX) TT
GROUP BY TT.IP, TT.NAME