4

[Price]私はこのようなテーブルを持っています

日付 商品価格

1-1-2012 Potion 500
1-1-2012 Elixir 5000
1-10-2012 Potion 600

テーブル[Transaction]

日付 項目 金額

2012年1月1日 ポーション1 2012年1月5日
ポーション1

価格とトランザクションを並べて、これらのテーブルを結合する必要があります。[価格]に日付がない場合は最新の価格を使用するルール

したがって、2012 年 1 月 5 日ポーションのコストは 500 になります。

結果はこのようになるはずです

日付 項目 金額 価格

2012年1月1日 ポーション1 500 2012年1月5
日 ポーション1 500

ですので、どうすればいいのかわかりません、どなたかご存知でしたら教えてください。ありがとう

4

2 に答える 2

2

単純な SCALAR SUBQUERY で十分です。

select t.date, t.item, t.amount,
       (select top(1) price
          from price
         where t.item=p.item and p.date <= t.date
      order by p.date desc) price
  from [transaction] t;
于 2012-11-15T13:36:29.570 に答える
0

これは機能するはずです:

 SELECT 
    t.Date, 
    t.Item, 
    t.Amount,
    ISNULL(
       p.Price, 
       (
          SELECT TOP 1 p1.Price FROM [Price] p1 
          WHERE p1.Item = t.Item 
          ORDER BY Date DESC
       ) [Price]
 FROM 
     [Transaction] t 
     LEFT OUTER JOIN
         [Price] p
         ON 
         t.Date = p.Date
         AND
         t.Item = p.Item
于 2012-11-15T13:38:37.000 に答える