高级查询

nieshoushuai 2009-03-24 08:55:26
表:第一列商品规格,第二列商品的等级(1:合格;2:次品;3:废品)

spec grade
A 1
A 2
B 1
B 2
C 3
C 2

求一条SQL语句,我要统计出每种规格的合格品、次品、废品的数目。
这种形式:
spec hege cipin feipin
A 1 1 0
B 1 1 0
C 0 1 1


我用了笨方法:建立中间表,然后挨个将A、B、C的合格次品废品数查出来,然后添加到中间表中,
呵呵呵,我觉得应该有好的方法吧,请不吝指教!!!!在线等。。
...全文
135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyshadow 2009-03-24
  • 打赏
  • 举报
回复
参考此贴:
http://topic.csdn.net/u/20090323/16/52f9ea3a-768e-4b4d-8c46-f9e01a2e4cb9.html
he_hawk 2009-03-24
  • 打赏
  • 举报
回复
楼上的方法都差不多了。
zzxap 2009-03-24
  • 打赏
  • 举报
回复
表:第一列商品规格,第二列商品的等级(1:合格;2:次品;3:废品)
spec grade
A 1
A 2
B 1
B 2
C 3
C 2
求一条SQL语句,我要统计出每种规格的合格品、次品、废品的数目。
这种形式:
spec hege cipin feipin
A 1 1 0
B 1 1 0
C 0 1 1
[code=SQL]
SELECT spec ,max ( case grade when '1' then 1 else 0 end ) as hege ,
max ( case grade when '2' then 1 else 0 end ) as cipin ,
max ( case grade when '3' then 1 else 0 end ) as feipin
group by spec
[/CODE]
zzxap 2009-03-24
  • 打赏
  • 举报
回复
贴慢了
zzxap 2009-03-24
  • 打赏
  • 举报
回复
表:第一列商品规格,第二列商品的等级(1:合格;2:次品;3:废品)
spec grade
A 1
A 2
B 1
B 2
C 3
C 2
求一条SQL语句,我要统计出每种规格的合格品、次品、废品的数目。
这种形式:
spec hege cipin feipin
A 1 1 0
B 1 1 0
C 0 1 1
[code=SQL]
SELECT spec ,max ( case grade when 1 then 1 else 0 end ) as hege ,
max ( case grade when 2 then 1 else 0 end ) as cipin ,
max ( case grade when 3 then 1 else 0 end ) as feipin
group by spec
[/CODE]
lg3605119 2009-03-24
  • 打赏
  • 举报
回复

if object_id('tb') is not null drop table tb

create table tb(spec varchar(50),grade int)
insert into tb
select 'A',1 union all
select 'A',2 union all
select 'B',1 union all
select 'B',2 union all
select 'C',3 union all
select 'C',2


select spec ,
sum(case when grade=1 then 1 else 0 end)[合格],
sum(case when grade=2 then 1 else 0 end)[次品],
sum(case when grade=3 then 1 else 0 end)[废品]
from tb
group by spec

drop table tb
wuyi8808 2009-03-24
  • 打赏
  • 举报
回复
select spec, hege=sum(hege), cipin=sum(cipin), feipin=sum(feipin)
from
(
select
spec,
hege = case grade when 1 then 1 else 0 end,
cipin = case grade when 2 then 1 else 0 end,
feipin = case grade when 3 then 1 else 0 end
from 表
) 临时表
group by spec
dyshadow 2009-03-24
  • 打赏
  • 举报
回复
前段时间我也问了个类似的问题:
http://topic.csdn.net/u/20090226/15/7482dfee-7375-4a12-b01a-e79f2167d9be.html
给的答案没有多大用处,之后我用一段程序解决了,比较消耗时间的方法.

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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