使用别名“情况下”在where子句
问题描述:
我有一个错误:使用别名“情况下”在where子句
Invalid column name Temp
我想在where
子句中使用的列Temp
。我该怎么做?
ALTER PROCEDURE [dbo].[R_rpt1]
@ltt int
AS
BEGIN
SELECT ROW_NUMBER() OVER (ORDER BY YeuCauId) STT, a.name,
CASE WHEN a.tt = 0 THEN 0
WHEN (a.tt = 1 AND a.code IN (Select code from SCHEMAB.dbo.databaseB)) THEN 3
WHEN (a.tt = 1) THEN 1
WHEN a.tt=2 THEN 2
END as Temp
FROM ViewPhieuYeuCau a
WHERE Temp = @ltt
END
答
使用子查询:
ALTER PROCEDURE [dbo].[R_rpt1]
@ltt int
AS
BEGIN
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY YeuCauId) STT, a.name,
CASE
WHEN a.tt = 0 THEN 0
WHEN a.tt = 1 AND a.code IN (Select code from SCHEMAB.dbo.databaseB) THEN 3
WHEN a.tt = 1 THEN 1
WHEN a.tt=2 THEN 2
END as Temp
FROM ViewPhieuYeuCau a
) t
WHERE Temp = @ltt
END
由于WHERE
子句的SELECT
之前首先执行,Temp
尚未被WHERE
条款的认可。要解决这个问题,你必须使用子查询。
非常感谢。 – MeosCoder