sql server检查大于select语句

时间:2012-08-15 20:52:40

标签: sql sql-server-2008-r2

为什么我不能这样做:

    select distinct ps.ID, from vwList wt
    where Flag = 1 
    and GETDATE()  < (select dbo.fn_Date(ps.date1,ps.UploadDate) from pseres ps where ps.ID = wt.ID)  

我得到多部分标识符“ps.ID”无法绑定。

4 个答案:

答案 0 :(得分:2)

由于ps.ID与wt.ID匹配,ps仅在子查询中提及,为什么不:

select distinct wt.ID from vwList wt

答案 1 :(得分:1)

问题在于外部选择。试试这个:

select distinct wt.ID
from vwList wt
where Flag = 1 and
      GETDATE()  < (select dbo.fn_Date(ps.date1,ps.UploadDate) from pseres ps where ps.ID = wt.ID)   

答案 2 :(得分:0)

PS位于where子句的内部选择中。如果要从pseres中选择列,则需要将其放在from子句中或作为连接。

答案 3 :(得分:0)

这应该有效:

SELECT DISTINCT wt.ID
FROM vwList wt
    INNER JOIN (SELECT dbo.fn_Date(ps.date1,ps.UploadDate) AS MyDate FROM pseres) ps ON     wt.ID = ps.ID
WHERE Flag = 1 AND
      MyDate > GETDATE()