[英]Microsoft Query Group / Partition By
假設我嘗試通過Excel中的Microsoft Query查詢的數據庫中包含以下數據:
Col_A: Col_B: Col_C: Col_D: Date1: Date2:
a1 b1 c1 d1 Dt1_1 Dt2_1
a1 b2 c2 d2 Dt1_1 Dt2_2
a1 b3 c3 d3 Dt1_1 Dt2_3
a1 b4 c4 d4 Dt1_2 Dt2_4
a1 b5 c5 d5 Dt1_2 Dt2_5
並且,就日期而言,假設例如“ _1” <“ _ 2”。 因此,我想要的是,對於Col_A
每個值,為最早的Date2
每個Date1
獲取一行。
因此,鑒於此數據,我想回來:
Col_A: Col_B: Col_C: Col_D: Date1: Date2:
a1 b1 c1 d1 Dt1_1 Dt2_1
a1 b4 c4 d4 Dt1_2 Dt2_4
換句話說,由於Date1
發生了更改,因此我們獲得了最早的Date2
的數據。 我希望這是有道理的。
在MySQL中,我相信查詢看起來像:
SELECT Col_A, Col_B, Col_C, Col_D, Date1, Date2
FROM MyTable
ORDER BY Col_A, Date1, Date2
GROUP BY Col_A, Date1, Date2
或類似的東西:
SELECT Col_A, Col_B, Col_C, Col_D, Date1, Date2,
RANK() OVER(PARTITION BY Col_A, Date1 ORDER BY Date2) as RN
FROM MyTable
WHERE RN = 1
ORDER BY Col_A, Date1, Date2
...我知道這行不通,但是邏輯幾乎就是我要尋找的...
但是我不知道如何在Microsoft Query中執行此操作。
我希望這是有道理的!!
謝謝!
Microsoft Query沒有給您很多選擇,因此,最好的辦法是在數據庫中將其創建為視圖。 這是設置它的MSSQL SQL:
CREATE VIEW MyView AS
WITH M_CTE(M_COL_A, M_Date1, M_Date2)
AS(
SELECT A.[Col_A]
,A.[Date1]
,MIN(A.[Date2]) AS Date2
FROM [Sheet1] A
GROUP BY A.[Col_A]
,A.[Date1])
SELECT B.* FROM [Sheet1] B
INNER JOIN M_CTE
ON B.Col_A = M_COL_A
AND B.Date1 = M_Date1
AND B.Date2 = M_Date2
然后,您可以使用Excel中的MS Query輕松連接到視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.