Составной идентификатор не может быть связан, когда есть разница между двумя значениями в SQL Server 2005 - PullRequest
3 голосов
/ 10 февраля 2012

У меня есть этот простой оператор SQL:

select Expr1.value - Expr2.value FROM
(SELECT
Expr1 = (SELECT COUNT(ID) FROM Table1),
Expr2 = (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED))
)

Он выдает мне ошибки:

Не удалось связать многоэлементный идентификатор "Expr1.value".-частичный идентификатор 'Expr2.value' не может быть связан

Где моя ошибка?

Я читаю в Stackoverflow, но многие темы относятся только к операторам INNER JOIN.Я ищу разницу между Expr1 и Expr2.(и покажи результат)

1 Ответ

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

Попробуйте:

select Expr1 - Expr2 FROM
(
    SELECT
    Expr1 = (SELECT COUNT(ID) FROM Table1),
    Expr2 = (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED))
) as t

Это:

SELECT
    Expr1 = (SELECT COUNT(ID) FROM Table1),
    Expr2 = (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED))

возвращает набор результатов со столбцами с именами Expr1 и Expr2, и таким образом вы должны обращаться к ним. В любом случае я предпочитаю as для псевдонимов столбцов:

select Expr1 - Expr2 FROM
(
    SELECT
    (SELECT COUNT(ID) FROM Table1) as Expr1,
    (SELECT COUNT(ID_) FROM Table1 WHERE (UPDATED > CREATED)) Expr2
) as t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...