1

さまざまなテーブルから注文情報を取得するクエリを作成しようとしています。目標の日付値で障害が発生しました。

目標日が変更されるたびに、そのテーブルに新しい行が追加されるようです。私が望むのは、最新のターゲット日付のみを選択できるようにすることだけです。私は何をすべきか?

 select Distinct
 OR01001 AS OrderNumber,
 OR01002 AS OrderType,
 OR01003 AS CustomerCode,
 OR01015 AS OrderDate,
 OR01017 AS CustomerREP,
 OR01018 AS ContactPerson,
 OR01019 AS SalesmanNumber,
 OR03011 - OR03012 AS OpenQuantity,
 SC03003 AS StockBalance,
 OR01050 AS WarehouseNumber,
 OR01072 AS CustomerPO,
 OR03005 AS ItemCode,
 OR03002 AS LineNumber,
 OR500100.OR50004 As TargetDate
 from OR010100
 INNER Join OR030100 ON OR030100.OR03001 = OR010100.OR01001
 INNER Join SL010100 ON SL010100.SL01001 = OR010100.OR01003
 INNER Join SC030100 ON SC030100.SC03001 = OR030100.OR03005 
 Inner JOIN OR500100 ON OR500100.OR50001 = OR010100.OR01001 
 where OR010100.OR01002 <> 0 AND OR010100.OR01002 <> 6 AND OR01017 = 'SLOTT' 
 Order by OR01017 ASC;
4

2 に答える 2

1

私があなたのコラムを正しく理解しているなら、ここに1つの方法があります:

SELECT ...,
    OR500100A.OR50004 AS TargetDate
FROM ...
INNER JOIN OR500100 AS OR500100A ON OR500100A.OR50001 = OR010100.OR01001 
    AND NOT EXISTS(SELECT 1 FROM OR500100 AS OR500100B 
                   WHERE OR500100B.OR5001 = OR010100.OR01001 
                   AND OR500100B.OR50004 > OR500100A.OR50004)
...

これにより、指定されOR500100たの最新の値を持つ行が1つだけ取得されるようになります。OR50004OR5001

于 2012-10-24T17:00:54.077 に答える
1

私が理解していることから、

SELECT
...
MAX(OR500100.OR50004) As TargetDate
FROM...
WHERE...
GROUP BY --everything but OR500100.OR50004
ORDER BY...

トリックを行う必要があります

編集:ty Ic。

于 2012-10-24T17:03:58.093 に答える