2
  • 2 つのタイプ (A と B) の注文のリストがあります。
  • すべてのアカウントには、タイプ A の注文が少なくとも 1 つあります。
  • アカウントには、各タイプの複数の注文が存在する可能性があります。
  • アカウントごとに、そのアカウントのすべてのタイプ A 注文の最小 Order_Date を知る必要があります。

SQL、powerquery、または powerpivot でこれを行う必要がありますか?
powerquery または powerpivot で計算することをお勧めします。何か案は?

4

4 に答える 4

0

前提 : [Order] テーブルと [Account] テーブルの間には 1 対多の関係があります。

手順:

  1. PowerPivot で [Order] テーブルと [Account] テーブルの間にリレーションシップを作成します。矢印が [注文] から [アカウント] に向いていることを確認します。
  2. テーブル [OrderType] が PowerPivot にまだ存在しない場合は作成します。PowerPivot で [Order] と [OrderType] テーブルの間にリレーションシップを作成します。ここでも、矢印が [Order] から [OrderType] に向いていることを確認します。
  3. 次のように、テーブル [Order] に計算フィールド (計算列ではない) を作成します。

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

Power Pivot で計算フィールドを作成する方法を説明するリンクを次に示します。リンク-1 リンク-2

  1. Power Pivot レポートを作成します。[Order_Type] 列を COLUMNS に配置し、[Account_Name] (または [Account_ID] またはその他のアカウント ID) を ROWS に配置します。最後に、計算フィールド [Minimum Date] (ステップ 3 で作成) を VALUES に追加します。
于 2015-07-03T18:21:31.027 に答える
0

Power Query を使用すると、カスタム SQL を使用せずにこれを簡単に実行できます。

A オーダーのみにフィルター: [タイプ] 列の [A] セルを右クリックし、[テキスト フィルター] > [等しい] をクリックします。

次に、AccountID と 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"
于 2015-07-04T23:31:28.577 に答える