select 电压,路名,count(良好),count(缺陷) from table group by 电压,路名
你拿到,SQL论坛去问问,应该可以解决。
你拿到,SQL论坛去问问,应该可以解决。
select 电压,路名, sum(case 设备情况 when '良好' then 1 else 0 end) as 良好, sum(case 设备情况 when '缺陷' then 1 else 0 end) as 缺陷 from 你的表名 group by 电压,路名
我的语句是SQL Server中的 你还没说使用的数据库是什么 :(
var i,j:integer; i:=0; j:=0; table.first; do begin query.add('select 电压,路名, 良好 from table'); if not null then i:=i+1; query.add('select 电压,路名, 缺陷 from table'); if not null then j:=j+1; end; table.next; while not table.eof
select 电压,路名, sum(case Trim(设备情况) when '良好' then 1 else 0 end) as 良好, sum(case Trim(设备情况) when '缺陷' then 1 else 0 end) as 缺陷 from 你的表名 group by 电压,路名/* 请再试试 */
select A.电压,A.路名,A.良好,B.缺陷 from (select 电压,路名,count(*) AS 良好 from yourtable WHERE 设备情况='良好' group by 电压,路名) A, (select 电压,路名,count(*) as 缺陷 from yourtable WHERE 设备情况='缺陷' group by 电压,路名) B WHERE A.电压=B.电压 AND A.路名=B.路名
直接用一个sql语句应该是做不到的,可以分批查询出来再产生结果表
SQL如果解决不了就在客户端写个统计程序,应该不难吧。
go use tempdb go create table 电压表 ( 电压 int, 路名 varchar(10), 设备情况 varchar(10) ) go insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','良好'); insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','缺陷'); insert into 电压表 (电压,路名,设备情况) values ('500','BBBB','良好'); insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','缺陷'); insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','良好'); insert into 电压表 (电压,路名,设备情况) values ('220','AAAA','良好'); go select 电压,路名, sum(case 设备情况 when '良好' then 1 else 0 end) as 良好, sum(case 设备情况 when '缺陷' then 1 else 0 end) as 缺陷 from 电压表 group by 电压,路名/* 这是我调试的结果 电压 路名 良好 缺陷 220 AAAA 2 0 500 AAAA 4 4 500 BBBB 2 0 */
电压,路名
sum(case 设备情况 when '良好' then 1 else 0 end) as 良好,
sum(case 设备情况 when '缺陷' then 1 else 0 end) as 缺陷
from 你的表名
group by 电压,路名
你还没说使用的数据库是什么 :(
i,j:integer;
i:=0;
j:=0;
table.first;
do
begin
query.add('select 电压,路名, 良好 from table');
if not null then i:=i+1;
query.add('select 电压,路名, 缺陷 from table');
if not null then j:=j+1;
end;
table.next;
while not table.eof
500 AAAA 良好的个数 有缺陷的个数
500 BBBB 良好的个数 有缺陷的个数
220 AAAA 良好的个数 有缺陷的个数
//做一张临时表吧,数据组织好后写到这里
http://www.csdn.net/expert/topic/799/799889.xml?temp=.2711603
http://www.csdn.net/expert/topic/799/799789.xml?temp=.6369135
http://www.csdn.net/expert/topic/795/795315.xml?temp=.9500238谁能解决,全部可用分相送!
sum(case when 设备情况='缺陷' then 1 end) as 缺陷,from table group by 电压,路名
select 电压,路名,
sum(case when 设备情况='良好' then 1 end) as 良好,
sum(case when 设备情况='缺陷' then 1 end) as 缺陷,
from yourtable
group by 电压,路名
现在的结果是(良好和缺陷里显示的是空值)
电压 路名 良好 缺陷
500 AAAA
500 BBBB
220 AAAA
sum(case Trim(设备情况) when '良好' then 1 else 0 end) as 良好,
sum(case Trim(设备情况) when '缺陷' then 1 else 0 end) as 缺陷
from 你的表名
group by 电压,路名/* 请再试试 */
from (select 电压,路名,count(*) AS 良好 from yourtable WHERE 设备情况='良好' group by 电压,路名) A,
(select 电压,路名,count(*) as 缺陷 from yourtable WHERE 设备情况='缺陷' group by 电压,路名) B
WHERE A.电压=B.电压 AND A.路名=B.路名
use tempdb
go
create table 电压表 (
电压 int,
路名 varchar(10),
设备情况 varchar(10)
)
go
insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','良好');
insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','缺陷');
insert into 电压表 (电压,路名,设备情况) values ('500','BBBB','良好');
insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','缺陷');
insert into 电压表 (电压,路名,设备情况) values ('500','AAAA','良好');
insert into 电压表 (电压,路名,设备情况) values ('220','AAAA','良好');
go
select 电压,路名,
sum(case 设备情况 when '良好' then 1 else 0 end) as 良好,
sum(case 设备情况 when '缺陷' then 1 else 0 end) as 缺陷
from 电压表
group by 电压,路名/*
这是我调试的结果
电压 路名 良好 缺陷
220 AAAA 2 0
500 AAAA 4 4
500 BBBB 2 0
*/