怎么写SQL查询结果?

怎么把这个查询结果:

SELECT 'A1' as UID ,'2' AS UWGT , 'X1' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'A1' as UID ,'3' AS UWGT , 'X2' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'B1' as UID ,'2' AS UWGT , '10' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'C1' as UID ,'4' AS UWGT , 'X3' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'C1' as UID ,'3' AS UWGT , 'X4' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'F1' as UID ,'3' AS UWGT , '20' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'D1' as UID ,'1' AS UWGT , 'X5' AS UNO from SYSIBM.DUAL
UNION ALL
SELECT 'D1' as UID ,'2' AS UWGT , 'X6' AS UNO from SYSIBM.DUAL

查询成如图的结果

SELECT t1.UID, UWGT, UNO1, UNO2
FROM (
         select UID, sum(UWGT) as UWGT
         from aa
         group by UID) as t1,
     (SELECT UID,
             max(case UID when 'A1' then UNO else null end)            as UNO1,
             if(max(case UID when 'A1' then UNO else null end) = min(case UID when 'A1' then UNO else null end)
                 , '', min(case UID when 'A1' then UNO else null end)) as UNO2
      from aa
      where UID = 'A1'
      UNION
      SELECT UID,
             max(case UID when 'B1' then UNO else null end)            as UNO1,
             if(max(case UID when 'B1' then UNO else null end) = min(case UID when 'B1' then UNO else null end)
                 , '', min(case UID when 'B1' then UNO else null end)) as UNO2
      from aa
      where UID = 'B1'
      UNION
      SELECT UID,
             max(case UID when 'C1' then UNO else null end)            as UNO1,
             if(max(case UID when 'C1' then UNO else null end) = min(case UID when 'C1' then UNO else null end)
                 , '', min(case UID when 'C1' then UNO else null end)) as UNO2
      from aa
      where UID = 'C1'
      UNION
      SELECT UID,
             max(case UID when 'F1' then UNO else null end)            as UNO1,
             if(max(case UID when 'F1' then UNO else null end) = min(case UID when 'F1' then UNO else null end)
                 , '', min(case UID when 'F1' then UNO else null end)) as UNO2
      from aa
      where UID = 'F1'
      UNION
      SELECT UID,
             max(case UID when 'D1' then UNO else null end)            as UNO1,
             if(max(case UID when 'D1' then UNO else null end) = min(case UID when 'D1' then UNO else null end)
                 , '', min(case UID when 'D1' then UNO else null end)) as UNO2
      from aa
      where UID = 'D1') as t2
where t1.UID = t2.UID

把“aa”换成你的表就行了

 

只有3个字段,怎么能显示成4列呢?

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632