2016-05-04 11 views
0

問題は、データベースにいくつかの値がありません。問題を最も近いクロス集計クエリで検索する必要があります。ACCESS - クロス集計クエリ - 最も近い一致

私はクロス集計表では、このように思える:

Source data

これは、競合他社の価格の値が欠落している - 項目111のために、私は最初の競技者とのための第二週の第3週の料金を持っていません第2競技者。アイテム222については、第1競技者の第2週価格および第2競技者のための1,3週間が欠場する。私は、出力データに最も近い週価格を使用したいと思います。

出力(物価指数計算用)(Excelのピボットテーブルでさらに計算を行うために列に競合他社の価格を)次のようになります。

enter image description here

の質問はどのように「検索」最も近い週の競争相手の価格、私はオレンジ色の不足価格をマークしました。

ご質問がある場合は、問題が明確になることを願っています。質問してください、私はすべてを明確にしようとします! 事前に感謝します!

Upd。 私が(サブクエリを持つ)は、次の方法でそれをやろう:

 SELECT m_week, item_code, my_price, (SELECT TOP 1 com_price 
    FROM MyTable AS T 
    WHERE T.item_code = MyTable.item_code 
    AND T.m_week <= MyTable.m_week 
    AND competotor_id = 1 
    ORDER BY T.m_week) AS Comp1_price, (SELECT TOP 1 com_price 
    FROM MyTable AS T 
    WHERE T.item_code = MyTable.item_code 
    AND T.m_week <= MyTable.m_week 
    AND competotor_id = 2 
    ORDER BY T.m_week) AS Comp2_price 
    ... the same for each competitor 
    FROM MyTable 

それは動作します..しかし、非常に遅く、私は各競技のために/ペーストをコピーする必要があります。次の事 - 私は(週に沿って)だけでなく、ダウン、だけでなく、アップの価格を検索したい

答えて

0

あなたはサブクエリを使用するクエリであなたのクロス集計を基できます SELECT p.competitor_id, p.m_week, p.item_code, p.com_price, p.my_price,
nz(p.com_price, (Select top 1 week_price FROM ( SELECT m_week, item_code, Max(com_price) AS week_price FROM YourTable WHERE com_price Is Not Null GROUP BY m_week, item_code ) as WeekPrices WHERE [item_code]=p.item_code and m_week < p.m_week ORDER BY m_week desc)) as com_price_calc FROM YourTable AS p;

  • これは表の結果、で満たされたナルデータとcom_price_calc列を持つ
  • 私はpとYourTableをエイリアスしている - 。親のため
  • NZ()関数は、あなたの使用してMySQL場合は、IFNULL() に置き換えることができ、専用アクセスのためであります
  • 内部サブクエリには、 の各週のm_week - item_codeの組み合わせの週価格が表示されます(nullでない場合)。
  • 親item_codeと前週の外部サブクエリフィルタで、 'ORDER BY m_week desc'を使用しているため、上位1は前の週の の値を返します。
+0

ご挨拶ありがとうございます!しかし、私はあなたの答えを読んで、私は問題の記述を間違えたことに気付きました。私は実際に行方不明の価格がないと私はそれが最初の質問を複雑に思う。 –

+0

多分nz()関数をクロス集計クエリに追加することができます。今度は次のようになります。 'TRANSFORM Avg(p.com_price)SELECT p.m_week、p.item_code、p.my_price from MyTable p。GROUP BY p.m_week、p.item_code、p.my_price PIVOT p.competitor_id' –

関連する問題