SQL查询多行转一行多列

本文介绍了如何使用SQL的pivot函数和case when语句将多行设备指标数据(如CPU、内存、温度)转换成单行多列的格式,以满足与南向系统的接口需求。当系统要求特殊分隔符时,可以采用casewhen方法进行转换。这两种方法在数据整理和接口对接中具有实用价值。
摘要由CSDN通过智能技术生成

场景描述:需要与南向系统建立接口,提供的数据中按行显示多台设备的多个指标(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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非鱼39938

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值