查询表

redstorm11 2005-04-14 05:52:42
我有表
字段 姓名 种类 数量
1 a 4
1 b 5
2 a 8
3 b 5
需要sql语句(不用存储过程或视图)得到以下形式:
字段 姓名 a b
1 4 5
2 8 0
3 0 5
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
redstorm11 2005-04-15
  • 打赏
  • 举报
回复
多谢
Well 2005-04-14
  • 打赏
  • 举报
回复
--建立測試環境
Create table tabletest
(姓名 Varchar(10),
種類 Varchar(10),
数量 Int
)
GO
--插入數據
Insert into tabletest
select '1', 'a', 4 union all
select '1', 'b', 5 union all
select '2', 'a', 8 union all
select '3', 'b', 5

--測試
select 姓名,
isnull(max(case when 種類 ='a' then 數量 end),0) as a,
isnull(max(case when 種類='b' then 數量 end),0) as b
from tabletest
group by 姓名
order by 姓名
paoluo 2005-04-14
  • 打赏
  • 举报
回复
--建立测试环境
Create table TEST
(姓名 Varchar(10),
种类 Varchar(10),
数量 Int
)
GO
--插入数据
Insert TEST Values('1', 'a', 4)
Insert TEST Values('1', 'b', 5)
Insert TEST Values('2', 'a', 8)
Insert TEST Values('3', 'b', 5)
GO
--测试
Select
姓名,
SUM(Case When 种类='a' Then 数量 Else 0 End) As a,
SUM(Case When 种类='b' Then 数量 Else 0 End) As b
from TEST
Group By 姓名
Order By 姓名
--删除测试环境
DROP table TEST
GO
--结果
/*
姓名 a b
1 4 5
2 8 0
3 0 5
*/
mschen 2005-04-14
  • 打赏
  • 举报
回复
select 姓名
,a=max(case 种类 when 'a' then 数量 else 0 end)
,b=max(case 种类 when 'b' then 数量 else 0 end)
from 表
group by 姓名
sprrav 2005-04-14
  • 打赏
  • 举报
回复
正解
wyb0026 2005-04-14
  • 打赏
  • 举报
回复
select 姓名
,sum(case when 种类='a' then 数量 else 0 end) a
,sum(case when 种类='b' then 数量 else 0 end) b
from tb
group by 姓名

34,593

社区成员

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

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