2017-07-31 59 views
0

我想在数据库上执行一个查询来构建与我拉(使用Developer Express)的数据的图表。 所以我有这个表,我回去跟我目前有:TSQL使字段值成列

enter image description here

但我想要做的是要提取的数据字段值的所有mycount的和转弯的实例他们到自己的人口列如下:

enter image description here

这是查询代码:

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 

谢谢!

+1

请编写代码和预期产出/投入的,而不是指图像 – yanman1234

+0

您使用什么数据库服务器? –

回答

1

一个办法做到这一点是使用上的每个状态的交叉连接:

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 
+0

这正是我所寻找的,但经过大约2个小时的谷歌搜索后,我找不到任何东西。谢谢!你能解释一下你做了什么,所以我可以自己学习如何做到这一点? –

+0

基本上,它计算子查询中每个状态ID的计数,然后使用交叉连接将它们连接到原始数据集。您可以在http://www.w3resource.com/sql/joins/cross-join.php阅读更多关于交叉连接的信息。 –