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

Sna*_*yes 2 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
Run Code Online (Sandbox Code Playgroud)

我想将结果显示为:

Expr1     Expr2    Expr3
-----     -----    -----
5           3         2
Run Code Online (Sandbox Code Playgroud)

怎么做 ?据我所知,这UNION比使用ORin WHERE子句更可靠,更快.

mar*_*c_s 5

你不能这样做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)
Run Code Online (Sandbox Code Playgroud)

这将为您提供一行包含三列,包含您正在寻找的值.