![](/img/trans.png)
[英]Select min of one column, max of another column and fields that go with max
[英]Select min of one column and max another column of consecutive numbers when other columns are the same
我需要以下幫助。 讓我用一個例子來解釋,因為我不知道如何用語言來表達。 我有下表:
ID | A欄 | B欄 | 是/否 |
---|---|---|---|
322 | 0 | 3 | 是 |
322 | 3 | 5 | 是 |
322 | 5 | 6 | ñ |
322 | 6 | 8 | ñ |
322 | 8 | 12 | 是 |
566 | 0 | 30 | 是 |
566 | 30 | 31 | 是 |
566 | 31 | 35 | ñ |
我想得到以下 output:
ID | A欄 | B欄 | 是/否 |
---|---|---|---|
322 | 0 | 5 | 是 |
322 | 5 | 8 | ñ |
322 | 8 | 12 | 是 |
566 | 0 | 31 | 是 |
566 | 31 | 35 | ñ |
有任何想法嗎? 提前致謝!!
這是一個間隙和孤島問題,一種方法使用行數差異法:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY A) rn1,
ROW_NUMBER() OVER (PARTITION BY ID, YN ORDER BY A) rn2
FROM yourTable
)
SELECT ID, MIN(A) AS A, MAX(B) AS B, YN
FROM cte
GROUP BY ID, YN, rn1 - rn2
ORDER BY ID, A;
如果我們仔細查看上面的GROUP BY
子句,我們可以看到我們通過ID
、 YN
以及定義為兩個行號序列的差異的偽組進行聚合。 這個rn1 - rn2
序列跟蹤一組具有相同ID
和YN
的記錄屬於哪個特定島。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.