2015-07-02 57 views
2
  • 我有有兩種類型(A和B)的訂單列表。
  • 每個帳戶至少有一個A型訂單。
  • 每個類型的多個訂單可以存在於一個賬戶中。
  • 對於每一個客戶,我需要知道該帳戶的所有A類訂單的最低order_date進行。

我應該在SQL,powerquery或powerpivot中執行此操作嗎?
我寧願在powerquery或powerpivot中計算它。 任何想法?如何返回每個帳戶最小日期爲特定訂單類型

+0

如果你的數據是在數據庫中,我會用它,這將是非常簡單的SQL。你可以發佈一些代碼嗎?你有什麼試過的? –

回答

2

只會讓你的表結構的一些基本假設。像這樣的東西應該工作:

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 
+0

這是不是會返回整個表的最舊訂單? –

+0

oops。由 –

+0

添加組應該做的竅門! –

0
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); 
0

假設:有一個[訂購]之間和[帳戶]表一對多的關係。

步驟:

  1. 創建[命令]之間和[帳戶]表中的PowerPivot關係。確保箭頭從[訂單]指向[賬戶]。
  2. 創建表[訂單類型],如果它不是已存在於PowerPivot的。在PowerPivot中的[Order]和[OrderType]表之間建立關係。再次確認箭頭從[Order]指向[OrderType]。
  3. 表[在線訂購]如下創建一個計算字段(未計算的列),

    [Minimum Date] = min(Order[Order_Date]) 
    

下面是說明如何在電力樞紐創建計算字段鏈接。 Link-1Link-2

  1. 創建Power Pivot報告。在列上放置[Order_Type]列,在[ROWS]上放置[Account_Name](或[Account_ID]或任何其他賬戶標識符)。最後,在VALUES上添加計算字段[最小日期](在步驟3中創建)。
0

功率查詢可以在沒有任何自定義的SQL很容易做到這一點。

篩選器只是一個命令:右鍵單擊類型列和 文本過濾>等於一個小區。

然後右鍵點擊帳戶ID和GROUP BY的最低訂購日期: 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" 
相關問題