1

我有一个带有 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 才能选择两个 EntryDate 并返回一行。我在这里使用什么样的查询?

4

3 回答 3

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
于 2013-06-26T15:47:18.280 回答
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
于 2013-06-26T15:50:56.010 回答
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
;
于 2013-06-26T15:54:03.823 回答