0

说我有以下查询:

    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 
     )
4

1 回答 1

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 
于 2012-08-14T18:14:09.703 回答