2012-02-10 89 views
2

我有这些简单的SQL语句:显示在SQL Server中的UNION语句中的每个列2005

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条款中更可靠和更快。

回答

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) 

这会给你一个排有三列,包含你正在寻找的值。

+1

感谢您的帮助。我很欣赏:) – 2012-02-10 08:11:38

2

是不是像

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

你需要什么?

+0

你的代码中的每一行后都缺少一对逗号....... – 2012-02-10 07:41:38

+1

@marc_s谢谢! – 2012-02-10 07:53:43