在SQL Server中选择

问题描述:

选择说我有以下查询:在SQL Server中选择

select ID, ActualDate, DueDate 
    from table1 

我需要做的就是添加一个名为标志 另一场将被标记为“Y”如果ActualDate比交货期

更大
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 table1 

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

什么不适用于'case'版本?如果你在最后删除多余的'''',你的最后一个查询应该可以工作 – Andomar 2012-08-14 18:03:32

+0

为什么第一个版本不工作?我看起来很好。 – 2012-08-14 18:04:43

+0

@戈登Linoff - 我得到无效的列名称ActualDate。无效的列名称DueDate - 请告知 – 2012-08-14 18:12:41

如果您的表中有字段,然后下面应该不需要子查询工作您可以使用子查询,但它是不必要的:

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

国旗实际上是一个不在表格中的字段,而是一个我在飞行中创建的字段。表中只有ID,ActualDate,DueDate。 Flag is not - please advice – 2012-08-14 18:15:29

+0

这并不重要,您正在使用'ActualDate'和'DueDate'字段值来创建'Flag'列。什么是你的领域的名字? – Taryn 2012-08-14 18:16:45