where子句不能与WITH一起使用

Mir*_*ain 1 sql sql-server sql-server-2008

当我在Prse ='h'写道时,where子句不能与WITH一起使用 它会显示错误'无效列'

;with cT(FLDID  ,FLD10  ,FLD610)
as
(
select  * from Table556 
inner join Table555 on table555.FLD9=FLD318
where FLD610=150 
)

select case when fld609 <=12 then 'h' else 's' end as Prse,* from cT 
where Prse ='h'
Run Code Online (Sandbox Code Playgroud)

Dam*_*ver 5

with有什么用它做.您只是Prse在最后一个SELECT子句中引入- 并且您不能从该WHERE子句引用这些列(因为之前WHERE逻辑运行). SELECT

你想要的是:

;with cT(Prse, FLDID  ,FLD10  ,FLD610)
as
(
select case when fld609 <=12 then 'h' else 's' end as Prse, * from Table556 
inner join Table555 on table555.FLD9=FLD318
where FLD610=150 
)

select * from cT 
where Prse ='h'
Run Code Online (Sandbox Code Playgroud)