繁体   English   中英

是否可以查询结果列名作为行值?

[英]Is it possible to query result column name as row value?

数据库中的表就是这种格式

 id    Name         Month   Spending

1001    Murphy      JAN       500
1001    Murphy      FEB       750
1001    Murphy      MAR       300
1002    Patterson   JAN       155
1002    Patterson   FEB       85
1002    Patterson   MAR       60
1003    Firrelli    JAN       125
1003    Firrelli    FEB       100
1003    Firrelli    MAR       250

对于图形中的绘图数据,我需要这样的查询结果。

id    name          JAN    FEB    MAR

1001   Murphy       500    750    300
1002   Patterson    155    85     60
1003   Firrelli     125    100    250

是否有可能获得这样的查询结果?

无需创建表,仅查询结果即可。

使用Conditional Aggregate将行转置为列。 尝试这个。

select id,Name,
max(case when Month ='Jan' then Spending end) Jan,
max(case when Month ='Feb' then Spending end) Feb,
max(case when Month ='Mar' then Spending end) Mar
from yourtable
group by id,Name

如果月份数是固定的,则可以通过多种方式来完成,例如:

SELECT id, Name, SUM(JAN) AS JAN, SUM(FEB) AS FEB, SUM(MAR) AS MAR
FROM
  (SELECT id, name, Spending AS JAN, 0 AS FEB, 0 AS MAR
  FROM t1
  WHERE Month = 'JAN'
  UNION ALL
  SELECT id, name, 0, Spending, 0
  FROM t1
  WHERE Month = 'FEB'
  UNION ALL
  SELECT id, name, 0, 0, Spending
  FROM t1
  WHERE Month = 'MAR')
GROUP BY id, Name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM