sql server在select中选择

时间:2012-08-14 18:02:27

标签: sql sql-server-2008-r2

说我有以下问题:

    select ID, ActualDate, DueDate
    from table1

我需要做的是添加另一个名为Flag的字段 如果ActualDate大于DueDate

,将标记为“Y”
    select ID, ActualDate, DueDate,
     CASE  
      WHEN ActualDate > DueDate THEN 'Y' 
     ELSE 'N' 
      END as Flag 
     from table1

上面的代码无效,因为我得到了无效的列名ActualDate。列名DueDate无效。 我需要做的是在这样的选择中选择:

    select ID, ActualDate, DueDate, 
    CASE  
     WHEN ActualDate > DueDate THEN 'Y' 
     ELSE 'N' 
    END as Flag  
    from
    (select ID, ActualDate, DueDate
     from table1) tbl1 
     )

1 个答案:

答案 0 :(得分:0)

如果您的表中包含字段,那么以下内容应该可以在不需要子查询的情况下运行:

select ID, 
    ActualDate, 
    DueDate,
    CASE  
        WHEN ActualDate > DueDate 
        THEN 'Y' 
        ELSE 'N' 
    END as Flag 
FROM table1

您可以使用子查询,但这是不必要的:

select ID, 
    ActualDate, 
    DueDate, 
    CASE  
        WHEN ActualDate > DueDate 
        THEN 'Y' 
        ELSE 'N' 
    END as Flag  
FROM
(
    select ID, ActualDate, DueDate
    from table1
) tbl1