小白请教一个sql查询语句。感谢

m0_69704947 2024-11-07 09:34:34

各位好。请教一个问题。现有一个表,记录不同t状态下的abc各值。如图:

 最终要实现的是统计不同状态t下的 abc 各数值。其中c在t2状态下没有值 就做成0。并且把t的不同状态值做成列要求表结构如下:

code   t1     t2

a        20     15

b       20      10

c      10      0(这个0 就是根据语句生成。表中c在t2状态下没有数据的) 

请教。谢谢

...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫狸嘎 11-21
  • 打赏
  • 举报
回复

为啥不用pivot

  • 打赏
  • 举报
回复

自己研究出来了。参考了这篇文章
https://geek-docs.com/mysql/mysql-ask-answer/541_mysql_setting_column_values_as_column_names_in_the_sql_query_result.html
虽然文章中用用的是Mysql 但是都是类sql的 触类旁通。参考领悟就不难理解。这篇文章正是我想要的。
我采用了CASE语句进行列值转换来实现。应该是sql查询语句的通用标准。兼容各种sql数据库。。
代码如下:

SELECT code,
SUM(CASE WHEN t = 't1' THEN total ELSE 0 END) as 't1', //把列值作为查询结果的字段
SUM(CASE WHEN t = 't2' THEN total ELSE 0 END) as 't2' //同上
//在这个表中查询。这表就是我问题中的图中的数据表。也是通过语句生成的一个表。在此例中作为数据表源
FROM ( select code, sum(num) as total, t FROM [dbo].[Table_1] where zz='y' group by code,t) as tb
group by code

执行后得到了我要的结果

img

供其他小白参考

34,696

社区成员

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

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