Sql server TSQL将字段值转换为列

Sql server TSQL将字段值转换为列,sql-server,tsql,devexpress,Sql Server,Tsql,Devexpress,我正在尝试对数据库进行查询,以使用我提取的数据(使用Developer Express)构建图表。 因此,我有一张表,我用我目前拥有的东西返回: 但我想做的是让数据提取MYCOUNT所有实例的字段值,并将它们转换为自己填充的列,如下所示: 这是查询的代码: SELECT 'Approval Progress' AS ACTIVITY, CASE STATUS WHEN 0 THEN 'NO ACTION' WHEN 1 THEN 'PEN

我正在尝试对数据库进行查询,以使用我提取的数据(使用Developer Express)构建图表。 因此,我有一张表,我用我目前拥有的东西返回:

但我想做的是让数据提取MYCOUNT所有实例的字段值,并将它们转换为自己填充的列,如下所示:

这是查询的代码:

SELECT  
    'Approval Progress' AS ACTIVITY, 
    CASE STATUS 
       WHEN 0 THEN 'NO ACTION' 
       WHEN 1 THEN 'PENDING' 
       WHEN 2 THEN 'APPROVED' 
       WHEN 3 THEN 'REJECTED'
       ELSE 'ERROR' 
    END AS APRV, 
    COUNT(*) AS MYCOUNT,  
    4 AS TOT0, 8 AS TOT1, 3 AS TOT2 
FROM 
    IT_PROJAPPROVEWIP AS IT_PROJAPPROVEWIP_1 
GROUP BY 
    STATUS

谢谢大家!

一种方法是在每个状态上使用交叉连接:

SELECT *
FROM
  (SELECT 'Approval Progress' AS ACTIVITY,
          CASE STATUS
              WHEN 0 THEN 'NO ACTION'
              WHEN 1 THEN 'PENDING'
              WHEN 2 THEN 'APPROVED'
              WHEN 3 THEN 'REJECTED'
              ELSE 'ERROR'
          END AS APRV,
          COUNT(*) AS MYCOUNT
   FROM IT_PROJAPPROVEWIP AS IT_PROJAPPROVEWIP_1
   GROUP BY STATUS)a
CROSS JOIN
  (SELECT COUNT(*) AS Tot0
   FROM IT_PROJAPPROVEWIP
   WHERE STATUS = 0 ) b
CROSS JOIN
  (SELECT COUNT(*) AS Tot1
   FROM IT_PROJAPPROVEWIP
   WHERE STATUS = 1 ) c
CROSS JOIN
  (SELECT COUNT(*) AS Tot2
   FROM IT_PROJAPPROVEWIP
   WHERE STATUS = 2 ) d
CROSS JOIN
  (SELECT COUNT(*) AS Tot3
   FROM IT_PROJAPPROVEWIP
   WHERE STATUS = 3 ) e

请写出代码和预期的输出/输入,而不是参考图片您使用的是什么数据库服务器?这正是我要找的,但在谷歌搜索了大约2个小时后,我什么也找不到。非常感谢。你能解释一下你做了什么,这样我就可以自己学习如何做了吗?基本上,它是计算子查询中每个状态id的计数,然后使用交叉连接将它们连接到原始数据集。有关交叉联接的更多信息,请访问: