2012-08-14 89 views
0

選擇說我有以下查詢:在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

回答

0

如果您的表中有字段,然後下面應該不需要子查詢工作您可以使用子查詢,但它是不必要的:

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