有多少行可以在Table1
具有相同的ID?我假設2,但查詢將工作合理,即使1或3+。
「彼此關注」 - 任何兩個日期都會跟着彼此,除非它們是相同的,所以下面唯一真正的檢查就是不平等。
「布爾值爲false」 - 有兩行,它們可以有不同的布爾值。我認爲他們都必須是假的。 (假爲0,真爲1)
的樣本數據
這是怎麼了你的樣本數據應該在你的問題提出。至少你應該寫一些日期,以便我們不必猜測月份和日期是什麼。
DECLARE @Table1 TABLE (ID int, dt date, Flag bit);
INSERT INTO @Table1 (ID, dt, Flag) VALUES
(1, '2017-01-03', 'false'),
(2, '2017-01-03', 'true'),
(1, '2017-01-01', 'false'),
(2, '2016-12-10', 'false');
DECLARE @Table2 TABLE (ID int, dt date);
INSERT INTO @Table2 (ID, dt) VALUES
(1, '2017-01-03'),
(2, '2017-01-03'),
(1, '2017-01-02'),
(1, '2016-12-12');
查詢
WITH
CTE
AS
(
SELECT
ID
,MIN(dt) AS StartDT
,MAX(dt) AS EndDT
,MAX(CAST(Flag AS int)) AS MaxFlag
FROM @Table1 AS Table1
GROUP BY ID
)
SELECT
CTE.ID
,A.dt
FROM
CTE
CROSS APPLY
(
SELECT
Table2.dt
FROM @Table2 AS Table2
WHERE
Table2.ID = CTE.ID
AND Table2.dt >= CTE.StartDT
AND Table2.dt <= CTE.EndDT
) AS A
WHERE
StartDT < EndDT -- "are following each other"
AND MaxFlag = 0 -- "the boolean is false" for both IDs
;
結果上Table2
上(ID, dt)
+----+------------+
| ID | dt |
+----+------------+
| 1 | 2017-01-02 |
| 1 | 2017-01-03 |
+----+------------+
指數將有很大的幫助。
添加一些示例表格數據和預期結果(以及格式化文本)。同時向我們顯示您當前的查詢嘗試。並標記你正在使用的dbms。 – jarlh
「表1中的2個連續日期」是什麼意思? –
** [編輯] **您的問題,並根據該數據添加一些示例數據和預期輸出。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not - 當提問時/ 285557#285557) –