0

私は2つのテーブルを持っています:

  1. 請求書
  2. 料金

マージン レポートを作成するために、請求書レコードに関連付けられたコスト レコードを検索したいと考えています。

たとえば、請求書テーブルから 1004 を注文すると、そのファイルから日付と時刻を取得し、その日付と時刻に基づいてコストを見つけたいと思います (それ以下)。

注文 1004 の 04/15 時間は 171543 であり、日付 04/15 と時間 171523 のコスト テーブル レコードをリンクします。

出力の表示方法の詳細については、下の画像を参照してください。

前もって感謝します

請求書ファイル

Order1    Item1  Sales1     Date1   Time1
1001      | A1001   | 10.00     |04/15  |151025
1002      | A1001   | 12.00     |04/15  |151112
1003      | A1001   | 11.00     |04/15  |171235
1004      | A1001   | 14.00     |04/15  |171543
1005      | A1001   | 13.50     |04/15  |171855

コストファイル

Item2   Cost2   Date2    Time2 
A1001   | 3.50  |04/14  |171255
A1001   | 4.20  |04/15  |151233
A1001   | 2.50  |04/15  |171523
A1001   | 4.00  |04/15  |171623

出力レイアウト - 証拠金レポート

Order   |Item    |Sales     |Cost   |Margin
1001    |A1001   |10.00     |3.50   | 6.50
1002    |A1001   |12.00     |3.50   | 8.50 
1003    |A1001   |11.00     |2.50   | 8.50 
1004    |A1001   |14.00     |2.50   | 11.50 
1005    |A1001   |13.50     |4.00   | 9.50 
4

1 に答える 1

3

これはうまくいくはずです

select yourFields
  from invoice
       inner join cost on cost.item2 = invoice.item1
                      and cost.date2 = invoice.date1
                      and cost.time2 = (select max(cost_inner.time2)
                                          from cost as cost_inner
                                         where cost_inner.item2 = invoice.item1
                                           and cost_inner.date2 = invoice.date1
                                           and cost_inner.time2 <= invoice.time1)

より複雑なクエリで内部結合を回避する方法があります。ここで確認できます

于 2012-04-25T15:06:25.857 に答える