Я использую CTE, в котором есть подзапрос. Затем я пытаюсь выбрать результат подзапроса в CTE, но получаю ошибку Invalid Column Name
.
Запрос:
DECLARE @User AS VARCHAR(50)
SET @User = 'test.user'
WITH cte AS (
SELECT
o.db_OrderNo,
o.db_Deferral
FROM
tblOrders o
LEFT JOIN tblUserProfile up on up.db_UserId = o.db_RTS
WHERE
o.db_Deleted = 0
AND (select OrderBucketId from Main.udfGetOrderStatusStepInfoByOrderNo(o.db_OrderNo) as Task) IN (1, 2, 3, 4)
AND up.db_Email LIKE @User + '%'
)
SELECT COUNT(DISTINCT (CASE WHEN Task = 1 AND db_Deferral = 0 THEN db_OrderNo
END)) as OrderInEvalCount,
COUNT(DISTINCT (CASE WHEN Task = 2 AND db_Deferral = 0 THEN db_OrderNo
END)) as OrderInDfcCount,
COUNT(DISTINCT (CASE WHEN Task IN (3, 4) AND (select OrderStepId from Main.udfGetOrderStatusStepInfoByOrderNo(o.db_OrderNo)) NOT IN (37, 39) AND
db_Deferral = 0 THEN db_OrderNo
END)) as OrderWipCount,
COUNT(DISTINCT (CASE WHEN db_Deferral <> 0 THEN db_OrderNo
END)) as OrderInPendedCount
FROM cte;
Он не распознает Task
как столбец. На самом деле не привык делать подзапросы, поэтому этот формат может быть неправильным. Не уверен, что временная таблица может помочь здесь. Любая помощь будет оценена по достоинству.
db_OrderNo
иdb_Deferral
. Если вы хотите что-то делать сTask
за пределами CTE, вам придется включить его в эти столбцы. - person Hellion   schedule 22.10.2015