如何在SQL中将这些列转换/转换为行?

时间:2016-09-12 09:47:22

标签: sql sql-server database count sql-server-2012

这必须是一个简单的问题,我非常不情愿地问这个问题 - 但是我无法解决这个问题。我有一个查询(以环形方式)返回2个计数:

Col1 | COL2
123    456

但我需要回复:

123 | COL1
456 | COL2

我尝试过什么

我看过UNPIVOT,但因为这些是简单的(独立的)行似乎没必要(即我不需要转动/取消标识符或任何东西)。

查询

SELECT SUM(CASE WHEN [CONDITION] THEN 1 ELSE 0 END) as Col1,
       SUM(CASE WHEN [CONDITION] THEN 1 ELSE 0 END) as Col2
FROM MyTable

1 个答案:

答案 0 :(得分:2)

使用UNION

SELECT COL1 AS VALUE, 'COL1' AS COL
FROM yourTable
UNION ALL
SELECT COL2 AS VALUE, 'COL2' AS COL
FROM yourTable

如果要从整个UNION查询中进行选择,可以将其包装并选择输出:

SELECT t.VALUE,
       t.COL
FROM
(
    SELECT COL1 AS VALUE, 'COL1' AS COL
    FROM yourTable
    UNION ALL
    SELECT COL2 AS VALUE, 'COL2' AS COL
    FROM yourTable
) t