【发布时间】:2010-03-05 09:26:42
【问题描述】:
在以下查询中,开始/结束列是日期时间字段。
我应该如何修改此查询以获得另外两列,一列包含最小日期,另一列包含最大日期(所有 6 个日期时间字段和所有行)在每一行中重复。
或者,我如何创建一个只返回这 2 个(最小/最大)日期的新查询,当然对于相同的结果集?
非常感谢! (我想要 SQL Server 2005 和 Sybase ASE 12.5.4 的答案)
select erg_mst.code,
erg_types.perigrafh,
erg_mst.FirstBaseStart,
erg_mst.FirstBaseFinish,
erg_mst.LastBaseStart,
erg_mst.LastBaseFinish ,
erg_mst.ActualStart,
erg_mst.ActualFinish
from erg_mst inner join
erg_types on erg_mst.type = erg_types.type_code
where erg_mst.activemodule = 'co'
and (
FirstBaseStart <> NULL OR
FirstBaseFinish <> NULL OR
LastBaseStart <> NULL OR
LastBaseFinish <> NULL OR
ActualStart <> NULL OR
ActualFinish <> NULL
)
order by isnull(FirstBaseStart,isnull(LastBaseStart,ActualStart))
【问题讨论】:
-
呃...不要使用
FirstBaseStart <> NULL,但FirstBaseStart IS NOT NULL否则将无法按预期工作,具体取决于ANSI NULL 设置。 -
非常感谢,我会记住的!
标签: sql sql-server tsql sap-ase