SQL行转列

INT.ZC 2018-08-24 05:22:10
有一个名单包括了一堆人的生日,要求统计1965年和1966年出生的人数。
SELECT Count(id) AS "1965"
FROM person
WHERE year_born=1965
UNION
SELECT Count(id) AS "1966"
FROM person
WHERE year_born=1966;
出来之后是这样的:
1965
------
20
24
(2 rows)
请教一下下一步该怎么转换呢?使用pivot?
...全文
372 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
grace8 2018-10-08
  • 打赏
  • 举报
回复
行列转置,可以用 case when 或者 with cte 表达式。
参考 SQL Server 2012编程入门经典(第4版)
xbmu3 2018-08-31
  • 打赏
  • 举报
回复
SQL code
?
1
2
3
SELECT case when year_born=1966 then Count(id) end AS '1966',
case when year_born=1965 then Count(id) end AS '1965'
FROM person


所有的行转列,列转行,都是用case when
中国风 2018-08-25
  • 打赏
  • 举报
回复
用1# 方法加上条件
WHERE year_born IN(1965,1966);
qq_25073223 2018-08-25
  • 打赏
  • 举报
回复
行转列请参考行转列 如有疑问,及时沟通!
墙头上乘凉 2018-08-25
  • 打赏
  • 举报
回复

SELECT case when year_born=1966 then Count(id) end AS '1966',
case when year_born=1965 then Count(id) end AS '1965'
FROM person
所有的行转列,列转行,都是用case when
RINK_1 2018-08-24
  • 打赏
  • 举报
回复

select sum(case when year_born=1965 then 1 else 0 end) as "1965",
sum(case when year_born=1966 then 1 else 0 end) as "1966"
from person

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧