0

次のクエリがあるとします。

    select ID, ActualDate, DueDate
    from table1

私がする必要があるのは、ActualDate が DueDate より大きい場合に「Y」としてマークされる Flag という別のフィールドを追加することです

    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 に答える