- 我有有兩種類型(A和B)的訂單列表。
- 每個帳戶至少有一個A型訂單。
- 每個類型的多個訂單可以存在於一個賬戶中。
- 對於每一個客戶,我需要知道該帳戶的所有A類訂單的最低order_date進行。
我應該在SQL,powerquery或powerpivot中執行此操作嗎?
我寧願在powerquery或powerpivot中計算它。 任何想法?如何返回每個帳戶最小日期爲特定訂單類型
我應該在SQL,powerquery或powerpivot中執行此操作嗎?
我寧願在powerquery或powerpivot中計算它。 任何想法?如何返回每個帳戶最小日期爲特定訂單類型
只會讓你的表結構的一些基本假設。像這樣的東西應該工作:
SELECT Account.Name, MIN(Order_date) FirstOrderDate
FROM Account LEFT OUTER JOIN Orders on Account.AccountId = Orders.OrderId
AND Orders.Type='A'
GROUP BY Account.Name
這是不是會返回整個表的最舊訂單? –
oops。由 –
添加組應該做的竅門! –
SELECT *
FROM accounts,order
WHERE accounts.id = order.account_id and order.id in
(SELECT TOP 1 id FROM order
WHERE type = "A"
ORDER BY date);
假設:有一個[訂購]之間和[帳戶]表一對多的關係。
步驟:
表[在線訂購]如下創建一個計算字段(未計算的列),
[Minimum Date] = min(Order[Order_Date])
下面是說明如何在電力樞紐創建計算字段鏈接。 Link-1Link-2
功率查詢可以在沒有任何自定義的SQL很容易做到這一點。
篩選器只是一個命令:右鍵單擊類型列和 文本過濾>等於一個小區。
然後右鍵點擊帳戶ID和GROUP BY的最低訂購日期:
一些硬編碼的數據,以顯示它的工作:
let
Source = Csv.Document("AccountID,Type,Order_Date
1,A,1/4/13
1,A,1/5/13
1,B,1/1/13
2,A,5/5/13"),
#"Promoted Headers" = Table.PromoteHeaders(Source),
TypedData = Table.TransformColumnTypes(#"Promoted Headers",{{"AccountID", Int64.Type}, {"Order_Date", type date}}),
#"Filtered Rows" = Table.SelectRows(TypedData, each [Type] = "A"),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"AccountID"}, {{"MinDate", each List.Min([Order_Date]), type date}})
in
#"Grouped Rows"
如果你的數據是在數據庫中,我會用它,這將是非常簡單的SQL。你可以發佈一些代碼嗎?你有什麼試過的? –