私の下のクエリは正常に動作し、最新のスキャンに基づいて異なる製品に新しい製品を登録します。SQL "Partition"チェックが正常に動作しない
私の問題は、同じIDの製品を受け取ることがあります(実際には可能です)。 私のベローのテーブルには場所があり、通常はプロダクトがの位置5に届くと、それは完了したことを意味し、新しい製品が登録されると、常にの位置1から始まります。 下記のように私はもう一度製品 "2222"を取得しました。私は "FirstScanned"を検索するには2222 '、1、2017-05-17 15:58の代わりに2222'、1 「2017年3月21日午前9時50
,min(p.Scanned) over (partition by p.ProductNR) as FirstScanned
テーブル:
CREATE TABLE Products
(
ProductNR varchar (14),
Location int,
Scanned Datetime
);
Insert Into Products(ProductNR, Location, Scanned)
Values('1111', 1, '2017-03-15 09:30'),
('1111', 2, '2017-03-16 11:35'),
('1111', 3, '2017-03-21 12:37'),
('2222', 1, '2017-03-21 09:50'),
('2222', 5, '2017-03-21 12:58');
('2222', 1, '2017-05-17 15:58');
とクエリ
select p.ProductNR, p.Location, p.Scanned
,case
when p.FirstScanned >= dateadd(day, -5, getdate()) then 'Less than 5 days old'
when p.FirstScanned <= dateadd(day, -5, getdate()) then 'More than 5 days old'
else '0'
end as Age
from
(
select p.ProductNR
,p.Location
,p.Scanned
,min(p.Scanned) over (partition by p.ProductNR) as FirstScanned
,max(p.Scanned) over (partition by p.ProductNR) as LastScanned
from Products p
) p
where p.LastScanned = p.Scanned
プラス1のテストデータでも、期待結果と実際の結果を加算します – TheGameiswar
ありがとう!私は、基本的に新しいproduktが既に同じproductnrを持っている私のテーブルに登録されていることを期待しています。私は、新しいものだけを検索し、古いものは検索しないようにしたい。古いものは、通常、私が上で説明したように位置5によって閉じられ、日付も古いものと定義されています – MishMish
1111の場合、出力は何ですか?ロケーション5のレコードがないため、レコードが選択されていませんか? –