在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
)
答
如果您的表中有字段,然后下面应该不需要子查询工作您可以使用子查询,但它是不必要的:
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
什么不适用于'case'版本?如果你在最后删除多余的'''',你的最后一个查询应该可以工作 – Andomar 2012-08-14 18:03:32
为什么第一个版本不工作?我看起来很好。 – 2012-08-14 18:04:43
@戈登Linoff - 我得到无效的列名称ActualDate。无效的列名称DueDate - 请告知 – 2012-08-14 18:12:41