Sql server TSQL将字段值转换为列
我正在尝试对数据库进行查询,以使用我提取的数据(使用Developer Express)构建图表。 因此,我有一张表,我用我目前拥有的东西返回: 但我想做的是让数据提取MYCOUNT所有实例的字段值,并将它们转换为自己填充的列,如下所示: 这是查询的代码: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
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的计数,然后使用交叉连接将它们连接到原始数据集。有关交叉联接的更多信息,请访问: