sql - 如何将这些列转换/转置为 SQL 中的行?

标签 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

最佳答案

使用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

关于sql - 如何将这些列转换/转置为 SQL 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39447560/

相关文章:

sql - 当您设置存储过程级别时, View 的隔离级别是多少?

mysql - 规范化和唯一 ID

java - 通过在一个集合中进行更改来反射(reflect)多个 mongodb 集合中的更改

php - mysql 查询 - 不要在多个 (5) 列中显示重复项?

mysql - 返回多行的 group_concat

java - ms Access 插入sql异常: general error

java - 我在java项目上找不到SqlServerDriver

mysql - 是否可以创建 "foreign key pair"? - SQL

sql-server - 如何在 MS SQL Server 2005 中分离编程逻辑和数据?

php - 无法删除或更新父行,外键约束失败