当前位置: 代码迷 >> Sql Server >> 关于MS sql 行变列有关问题
  详细解决方案

关于MS sql 行变列有关问题

热度:5   发布时间:2016-04-24 10:38:32.0
关于MS sql 行变列问题
怎么把图一变成图二
------解决方案--------------------
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 行受影响)

*/
  相关解决方案