簡體   English   中英

Microsoft查詢組/分區依據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM