sql中怎么将其中的某个字段横着显示出来?
展开全部
这是一个SQL的行转列问题,如下解决即可:
SELECT Item,
sum(case when Month = '1月' then Expenses else 0 end) as [1月] ,
sum(case when Month= ‘2月' then Expenses else 0 end) as [2月] ,
sum(case when Month= '3月' then Expenses else 0 end) as [3月] ,
sum(case when Month= '4月' then Expenses else 0 end) as [4月]
(如果这里还有其它月份的,以此类推即可。)
FROM T1
GROUP BY item
给你再解释一下,以后碰到了这类的问题,按照这个道理去做就不会出错:
第一点:根据要求的结果集,选定需要分组的一列,也就是不需要把行转为列名的,例如本次的结果集中:对比它要求的结果集与原表中的数据,发现Item在两个结果中,都作为列名,那么我们就选定它来Group BY。
第二点:这里用到sum函数,这个并不是特定的,随便用max min sum avg 只要是聚合函数 都可以,只是合并下。
第三点:SQL实现行转列,关键用到的语句就是case when ...这个语句,理解了这个SQL语句,SQL行转列的核心原理也就懂了。行转列就是SQL语句组合使用的技巧。
希望可以帮助到你,^_~。
SELECT Item,
sum(case when Month = '1月' then Expenses else 0 end) as [1月] ,
sum(case when Month= ‘2月' then Expenses else 0 end) as [2月] ,
sum(case when Month= '3月' then Expenses else 0 end) as [3月] ,
sum(case when Month= '4月' then Expenses else 0 end) as [4月]
(如果这里还有其它月份的,以此类推即可。)
FROM T1
GROUP BY item
给你再解释一下,以后碰到了这类的问题,按照这个道理去做就不会出错:
第一点:根据要求的结果集,选定需要分组的一列,也就是不需要把行转为列名的,例如本次的结果集中:对比它要求的结果集与原表中的数据,发现Item在两个结果中,都作为列名,那么我们就选定它来Group BY。
第二点:这里用到sum函数,这个并不是特定的,随便用max min sum avg 只要是聚合函数 都可以,只是合并下。
第三点:SQL实现行转列,关键用到的语句就是case when ...这个语句,理解了这个SQL语句,SQL行转列的核心原理也就懂了。行转列就是SQL语句组合使用的技巧。
希望可以帮助到你,^_~。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询