查询根据另一列的值从单列返回多个值

时间:2013-06-26 15:44:43

标签: sql

我有一个包含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并返回一行。我在这里使用什么样的查询?

3 个答案:

答案 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
;