Показать каждый столбец для оператора UNION в SQL Server 2005 - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть следующие простые операторы 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 является более надежным и быстрым, чем использование OR в WHERE предложении.

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

Вы не можете сделать это с 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)

Это даст вам одну строку с тремя столбцами, которые содержат значения, которые вы ищете.

2 голосов
/ 10 февраля 2012

Разве что-то вроде

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

не нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...