显示在SQL Server中的UNION语句中的每个列2005
问题描述:
我有这些简单的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
条款中更可靠和更快。
答
你不能这样做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)
这会给你一个排有三列,包含你正在寻找的值。
答
是不是像
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
感谢您的帮助。我很欣赏:) – 2012-02-10 08:11:38