SQL将同一字段不同值的数量统计在一行中怎么做

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:19:26
SQL将同一字段不同值的数量统计在一行中怎么做?

有一个设备管理表格,主要字段有 名称,状态 等,现在我要统计不同名称的设备中各中状态的数量,可以用SQL实现吗?统计出来应该类似下面的样子:

名称 正常数量 维修数量 报废数量 合计
A 1 2 3 6
B 1 2 3 6

有尝试过用"select 名称,状态,count(*) from aaa group by 名称,状态",但得出的结果不符合要求,它是一种同状态的数量列在一行中,不能全部在一行中.
前三楼的回答都不符合要求,我在问题中已说过了,这样查询的结果是每一种状一行,而我是想在一行中将同一名称设备的三种状态的数量都显示出来.

使用多个视图实现是可以的,根据这个思路再简单化吧
首先分别建立 '正常数量state0' '报废数量state1'的视图
SQL:create VIEW dbo.state0 AS SELECT 名称, 状态, COUNT(状态) AS zc FROM 表 GROUP BY 名称, 状态 where 状态=正常状态值
create VIEW dbo.state1 AS SELECT 名称, 状态, COUNT(状态) AS bf FROM 表 GROUP BY 名称, 状态 where 状态=报废状态值
。。。。。。。
select state0.名称,state0.zc,state1.bf from state0 INNER JOIN state1 on state0.名称=state1.名称
这只是个简单的思路,再琢磨下,应该可以实现了

同意二楼:select 名称,状态,count(状态) from aaa group by 名称,状态

select normal, mending, destroyed, (normal+mending+destroyed) as all

select 名称,状态,count(状态) from aaa group by 名称,状态

select 设备, sum(case when 状态=正常 then 1 end) as 正常, sum(case when 状态=维修 then 1 end) as 维修, sum(case when 状态=报废 then 1 end) as 报废, count(设备) as 总数 from table group by 设备;