我有一个包含EntryDate和ChecklistDay列的表。它们是日期和整数列。我想返回两个列,一个名为StartDate,另一个名为EndDate,两者都从EntryDate列中获取它们的值。 StartDate将从...返回
SELECT EntryDate AS StartDate FROM TABLE WHERE ChecklistDay = 1
EndDate将从...返回
SELECT EntryDate AS EndDate FROM TABLE WHERE ChecklistDay = 10
现在我只想返回一行,如果为StartDate和EndDate返回一个值,这意味着ChecklistDay必须同时具有值1和10,以便它选择两个EntryDates并返回一行。我在这里使用什么样的查询?
答案 0 :(得分:2)
您可以两次加入同一张桌子。
select startDt.EntryDate as StartDate,
endDt.EntryDate as EndDate
from table startDt
inner join table endDt
on startDt.id = endDt.id
where startDt.ChecklistDay = 1
and endDt.CheckListDay = 10
答案 1 :(得分:0)
这会有所帮助:
Select CASE ChecklistDay WHEN 1 THEN EntryDate ELSE NULL as StartDate,
CASE CheckListDay WHEN 10 THEN DateAdd(day, ChecklistDay, StartDate) ELSE NULL END as EndDate
from Table
答案 2 :(得分:0)
这应该在任何ANSI兼容的DBMS(Oracle,MySql,Sql Server,Postgresql,Informix,DB2等)中运行
SELECT
CASE ChecklistDay WHEN 1 THEN EntryDate ELSE NULL END as StartDate
, CASE CheckListDay WHEN 10 THEN EntryDate ELSE NULL END as EndDate
FROM
TABLE
;