sql - 在 SQL Server 2005 中显示 UNION 语句的每一列

标签 sql sql-server sql-server-2005

我有这些简单的 SQL 语句:

SELECT     COUNT(ID) AS Expr1
FROM         Table1
UNION
SELECT     COUNT(ID) AS Expr2
FROM         Table1 AS Table1_1
WHERE     (UPDATED > CREATED)
UNION
SELECT     COUNT(DISTINCT DATEPART(year, UPDATED)) AS Expr3
FROM         Table1 AS Table1_2

我想将结果显示为:

Expr1     Expr2    Expr3
-----     -----    -----
5           3         2

怎么做?我知道 UNION 比在 WHERE 子句中使用 OR 更可靠也更快。

最佳答案

您不能使用 UNION 执行此操作 - 这将为您提供行的并集 - 而不是列。

根据您的要求,尝试这样的事情:

SELECT 
    Expr1 = (SELECT COUNT(ID) FROM Table1),
    Expr2 = (SELECT COUNT(ID) FROM Table1 WHERE UPDATED > CREATED),
    Expr3 = (SELECT COUNT(DISTINCT DATEPART(year, UPDATED)) FROM Table1)

这将为您提供一行三列,其中包含您要查找的值。

关于sql - 在 SQL Server 2005 中显示 UNION 语句的每一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224155/

相关文章:

mysql - 如何按 DESC 按语句顺序放置字符串值

mysql - ORDER BY 两列,但不按时间排序?

sql-server - 使用 Azure Active Directory 凭据连接本地 SQL Server 数据库

SQL 自定义日期时间格式转日期时间

sql-server - 在 Linux 上使用窗口身份验证的 Sqoop 和 MSSQL 失败

c# - 从 bak 文件中检索数据库名称

MySQL将2个表中的数据合并到第3个表中

mysql - 从相似结果中过滤掉每组除一个结果以外的所有结果

sql-server - 合并索引查找

python - pymssql : Calling Stored Procedure with parameters