私の下のコードは正常に動作します。何それがないこと、それは、これがどのように動作するかを示すために、新しい場所これらのデータを取得するより良い方法はありますか?
select
a.loc1 As [Location 1],
b.loc2 as [Location 2],
c.loc3 as [Location 3],
d.loc4 as [Location 4]
FROM (select distinct a.ProductNR as Loc1
from LocationsTest a
where a.Date= (select max(Date) from LocationsTest where a.ProductNR = ProductNR)
AND a.Location = 1) as a
FULL OUTER JOIN
(select distinct a.ProductNR as Loc2
from LocationsTest a
where a.Date= (select max(Date) from LocationsTest where a.ProductNR = ProductNR)
AND a.Location = 2) as b
on a.Loc1 = b.Loc2
FULL OUTER JOIN
(select distinct a.ProductNR as Loc3
from LocationsTest a
where a.Date= (select max(Date) from LocationsTest where a.ProductNR = ProductNR)
AND a.Location = 3) as c
ON ISNULL(A.Loc1, b.Loc2) = c.Loc3
FULL OUTER JOIN
(select distinct a.ProductNR as Loc4
from LocationsTest a
where a.Date= (select max(Date) from LocationsTest where a.ProductNR = ProductNR)
AND a.Location = 4) as d
ON ISNULL(b.Loc2, c.Loc3) = d.Loc4
例に移動したときに、それはそれぞれの製品番号を更新している、あなたがそれらの異なる製品番号の下に4箇所を見ることができるようです。
製品後で新しい場所にスキャン取得の上、それは場所1にあったように、それはまだ私の履歴データに残りますが、私の上記のクエリはそれをこの示し----------------------------------------------------------
| Location 1 | Location 2 | Location 3 | Location 4
----------------------------------------------------------
| 1234 | | | |
| 4567 | | | |
| 8978 | | | |
| 2578 | | | |
----------------------------------------------------------
:
----------------------------------------------------------
| Location 1 | Location 2 | Location 3 | Location 4
----------------------------------------------------------
| | 1234 | | |
| 4567 | | | |
| 8978 | | | |
| 2578 | | | |
----------------------------------------------------------
それの取り出しを最終更新日に基づくデータ。 質問は私の上記のコードは長く見えます、特に私は将来的にさらに多くの場所を追加する予定です。 これを行うにはどんな良い方法ですか?
EDIT - サンプルデータ:私はあなたがノーノー一般的ではありません、あなたのSQLコード、内から書式設定の解決策を見つけるためにしようとしている印象を受けます
CREATE TABLE LocationsTest
(
ProductNR varchar (14),
Location int,
Date Datetime,
);
Insert Into LocationsTest (ProductNR, Location, Date)
Values('1234', 1, '2016-11-17 12:30:50.010'),
('4567', 1, '2016-11-17 12:35:50.010'),
('8978', 1, '2016-11-17 12:37:50.010'),
('2578', 1, '2016-11-17 12:50:50.010');
ソーステーブルとデータを入力するデータを入力してください。 – iamdave
これは実際のテーブルではなく、私のデータベースとほぼ同じテーブルの例です。 データをアップロードできるサイトをご存知ですか?フィドルのような? – MishMish
@MishMish製品がある場所から別の場所に移動したときは追跡しますか?製品が横断するすべての場所が維持されているテーブルがある場合、それは簡単なクエリになります。基本的に、履歴データが必要な場合は、それを追跡する必要があります。 –