读书人

急工作用!解决思路

发布时间: 2012-03-08 13:30:13 作者: rapoo

急,工作用!
有一组数据,要按它们的性质统计容量
表js

所属柜线 配变名称 容量 备注
良环线 A厂配变 315 专用
良环线 C厂配变 500 公用
良环线 E厂配变 630 专用
良环线 D厂配变 200 公用
国基线 H配变 315 专用
我现在要按线路和公专变(备注)统计容量,要得到如下形式的表格
表tj

良环线 公用 700 专用 945
国基线 公用 0 专用 315
我曾用group by 所属柜线,备注,但是只能得到下面的结果
良环线 公用 700
良环线 专用 945
国基线 公用 0
国基线 专用 315
但这用形式不能满足工作的要求,必须要得到表tj的形式!望各位大侠相助,不胜感激!



[解决办法]
select 所属柜线, 公用 = sum(case 备注 when '公用 ' then 容量 else 0 end), 专用 = sum(case 备注 when '专用 ' then 容量 else 0 end) from js group by 所属柜线

[解决办法]
--测试

declare @Test table(所属柜线 varchar(255),配变名称 varchar(255),容量 varchar(255),备注 varchar(255))
insert @Test
select '良环线 ', 'A厂配变 ', '315 ', '专用 ' union all
select '良环线 ', 'C厂配变 ', '500 ', '公用 ' union all
select '良环线 ', 'E厂配变 ', '630 ', '专用 ' union all
select '良环线 ', 'D厂配变 ', '200 ', '公用 ' union all
select '国基线 ', 'H配变 ', '315 ', '专用 '

select 所属柜线, 公用 = sum(case 备注 when '公用 ' then 容量 else 0 end), 专用 = sum(case 备注 when '专用 ' then 容量 else 0 end) from @test group by 所属柜线--, 备注

/*
所属柜线公用专用
国基线0315
良环线700945
*/

[解决办法]
楼上正解。。。
[解决办法]
--测试

declare @Test table(所属柜线 varchar(255),配变名称 varchar(255),容量 varchar(255),备注 varchar(255))
insert @Test
select '良环线 ', 'A厂配变 ', '315 ', '专用 ' union all
select '良环线 ', 'C厂配变 ', '500 ', '公用 ' union all
select '良环线 ', 'E厂配变 ', '630 ', '专用 ' union all
select '良环线 ', 'D厂配变 ', '200 ', '公用 ' union all
select '国基线 ', 'H配变 ', '315 ', '专用 '

select 所属柜线, 公用总数量 = sum(case 备注 when '公用 ' then 1 else 0 end), 公用 = sum(case 备注 when '公用 ' then 容量 else 0 end), 专用总数量 = sum(case 备注 when '专用 ' then 1 else 0 end), 专用 = sum(case 备注 when '专用 ' then 容量 else 0 end) from @test group by 所属柜线--, 备注

[解决办法]
这次是你需要的

declare @Test table(所属柜线 varchar(255),配变名称 varchar(255),容量 varchar(255),备注 varchar(255))
insert @Test
select '良环线 ', 'A厂配变 ', '315 ', '专用 ' union all


select '良环线 ', 'C厂配变 ', '500 ', '公用 ' union all
select '良环线 ', 'E厂配变 ', '630 ', '专用 ' union all
select '良环线 ', 'D厂配变 ', '200 ', '公用 ' union all
select '国基线 ', 'H配变 ', '315 ', '专用 '

select 所属柜线, 公用总数量=sum(case 备注 when '公用 ' then 1 else 0 end ),公用容量 = sum(case 备注 when '公用 ' then 容量 else 0 end),专用总数量=sum(case 备注 when '专用 ' then 1 else 0 end ), 专用容量 = sum(case 备注 when '专用 ' then 容量 else 0 end) from @test group by 所属柜线--, 备注

读书人网 >SQL Server

热点推荐