请教一个sql语句怎么写,谢谢!

zhf0021 2005-05-12 05:37:21
T1:
工位 故障代码 故障数
a 001 100
a 002 5
b 003 2
......
T2
故障代码 故障类型
001 MA
002 MI
003 MI

第一个表是每个工位的不同故障的故障数统计
第二个表是每个故障的类型分为主缺故障(MA),次缺故障(MI)
用一条查询语句统计出每个工位的总故障数,主缺故障数.次缺故障数

3X
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2005-05-12
  • 打赏
  • 举报
回复
哦,解决了,^_^。
paoluo 2005-05-12
  • 打赏
  • 举报
回复
怎么还UP??难道不行吗??
zhf0021 2005-05-12
  • 打赏
  • 举报
回复
多谢各位
zhf0021 2005-05-12
  • 打赏
  • 举报
回复
UP
heguosheng 2005-05-12
  • 打赏
  • 举报
回复
create table T1
(
工位 varchar(10),
故障代码 varchar(10),
故障数 int
)

create table T2
(
故障代码 varchar(10),
故障类型 varchar(10)
)

insert into T1
select 'a', '001', 100
union all
select 'a', '002', 5
union all
select 'b', '003', 2

insert into T2
select '001', 'MA'
union all
select '002', 'MI'
union all
select '003', 'MI'

select a.工位,总故障数=sum(故障数),
主缺故障数=sum(case when b.故障类型='MA' then a.故障数 else 0 end),
次缺故障数=sum(case when b.故障类型='MI' then a.故障数 else 0 end)
from T1 a
left join T2 b
on a.故障代码 = b.故障代码
group by a.工位

drop table T1,T2

/*结果
工位 总故障数 主缺故障数 次缺故障数
a 105 100 5
b 2 0 2
*/
paoluo 2005-05-12
  • 打赏
  • 举报
回复
楼上基本就是对的,但是字段名写错了。^_^


Select 工位,
主缺故障数=SUM(Case When 故障类型='MA' Then 故障数 ELse 0 End),
次缺故障数=SUM(Case When 故障类型='MI' Then 故障数 ELse 0 End)
From T1
Left Join T2
On T1.故障代码=T2.故障代码
Group By 工位
xluzhong 2005-05-12
  • 打赏
  • 举报
回复
select a.工位,
主缺故障数=sum(case when b.故障类型='MA' then a.100 else 0 end),
次缺故障数=sum(case when b.故障类型='MI' then a.100 else 0 end)
from T1 a
left join T2 b
on a.故障代码=b.故障代码
group by a.工位

34,588

社区成员

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

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