sql server在select中选择
假设我有以下问题:sql server在select中选择,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,假设我有以下问题: 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 fr
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中进行选择,如下所示:
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 table1
您可以使用子查询,但不需要:
select ID,
ActualDate,
DueDate,
CASE
WHEN ActualDate > DueDate
THEN 'Y'
ELSE 'N'
END as Flag
FROM
(
select ID, ActualDate, DueDate
from table1
) tbl1
什么在
案例中不起作用?如果在末尾删除多余的)
,那么上一个查询应该可以运行。为什么第一个版本不能运行?“我觉得很好。@Gordon Linoff-我得到的列名ActualDate无效。无效的列名DueDate-请advise@NatePet然后发布实际的查询。如果您的第一个查询有效,那么我看不出这些列(ActualDate
,DueDate
)如何不存在于表1
@NatePet上。如果是这样,那么您的第一个查询将不起作用。列名必须是表中的名称。也许您应该在问题中包括表中所有列的列表。Flag实际上不是表中的字段,而是我动态创建的字段。表中只有ID、ActualDate和DueDate。标志不存在-请通知这无关紧要,您正在使用ActualDate
和DueDate
字段值来创建标志
列。您的字段名称是什么?