我的下面的代碼工作正常。它所做的是它將更新每個產品編號,當它移動到新位置有沒有更好的方法來檢索這些數據?
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個地點。
----------------------------------------------------------
| Location 1 | Location 2 | Location 3 | Location 4
----------------------------------------------------------
| 1234 | | | |
| 4567 | | | |
| 8978 | | | |
| 2578 | | | |
----------------------------------------------------------
當一個產品以後獲取的掃描到一個新的位置,它仍然會留在我的歷史數據,因爲它是在位置1,但我上面的查詢顯示了它這樣的:
----------------------------------------------------------
| Location 1 | Location 2 | Location 3 | Location 4
----------------------------------------------------------
| | 1234 | | |
| 4567 | | | |
| 8978 | | | |
| 2578 | | | |
----------------------------------------------------------
它的檢索基於上次更新日期的數據。 問題是我上面的代碼看起來很長,特別是當我打算在將來添加更多位置時。 那麼有更好的方法來做到這一點?
編輯 - 示例數據:
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您是否跟蹤產品從一個位置移動到另一個位置?如果有一張表保持一個產品所遍歷的所有位置,這將是一個簡單的查詢。基本上,如果你需要歷史數據,你需要跟蹤它。 –