怎么把图一变成图二


------解决方案--------------------
select '已完成' as a,已完成 from tb
union all
select '进行中' as a,进行中 from tb
..
------解决方案--------------------
select case A when '已完成' then sum(b) else 0 end 已完成,
case A when '进行中' then sum(b) else 0 end 进行中,
.......
from table
------解决方案--------------------
IF OBJECT_ID('Test') IS NOT NULL
DROP TABLE Test
GO
CREATE TABLE Test([已完成] int,[进行中] int,[已超期] int,[已暂停] int,[未开始] int)
INSERT INTO Test SELECT 0,5,0,0,0
-----------------------------------------------------------查询-------------------------------------------------------------------------
;WITH t AS
(
SELECT '已完成' AS [A]
UNION ALL SELECT '进行中' AS [A]
UNION ALL SELECT '已超期' AS [A]
UNION ALL SELECT '已暂停' AS [A]
UNION ALL SELECT '未开始' AS [A]
)
SELECT a.*,CASE a.A WHEN '已完成' THEN b.[已完成] WHEN '进行中' THEN b.[进行中] WHEN '已超期' THEN b.[已超期] WHEN '已暂停' THEN b.[已暂停] WHEN '未开始' THEN b.[未开始] END B FROM t a,dbo.Test b
-----------------------------------------------------------结果---------------------------------------------------------------------------------
/*
A B
------ -----------
已完成 0
进行中 5
已超期 0
已暂停 0
未开始 0
(5 行受影响)
*/