2016-11-22 72 views
-1

這是我的表怎麼看在我的數據庫: 我有2個表:獲取基於最新日期的最新數據 - MSSQL

1. Location = ID, Name 
2. Product = ProdID, LocationID, CreatedDate 

------------------------------------------------- 
| ID   | Location  | CreatedDate  
------------------------------------------------- 
| 1234   | Location 1 | 2016-11-17 12:39 
| 4567   | Location 1 | 2016-11-17 12:39 
| 8978   | Location 1 | 2016-11-17 12:39  
| 8978   | Location 2 | 2016-11-17 13:39 
| 2578   | Location 1 | 2016-11-17 12:39 
| 1234   | Location 2 | 2016-11-18 12:39 
------------------------------------------------- 

我想檢索表象下面這樣:

---------------------------------------------- 
| Location 1 | Location 2 | Location 3 | 
---------------------------------------------- 
| 1234   | 1234   |    | 
| 4567   |    |    | 
| 8978   | 8978   | 8978   | 
| 2578   | 2578   | 2578   | 
---------------------------------------------- 

也是除上表我想查詢以獲得總量上的每個位置的最後一個掃描的唯一項目:

Location 1 count = 1 
Location 2 count = 1 
Location 3 count = 2 

說明:上表顯示了我們倉庫中不同物料的列表。 基本上,如果項目1234在位置1在12:00掃描並且在13:00掃描到位置2,則查詢只能從位置2獲取數據,因爲它是基於日期的最後一次更新。

+1

提供樣本數據。您提供了預期的結果。但示例數據丟失。 – Viki888

+0

'選擇 '1234' \'位置1 \', '1234' \'位置2 \', '' \'位置3 \'UNION ...' – Strawberry

+0

那可真的是很難回答沒有樣本數據類似這樣的問題。看看這[問題](http://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056),其中要求的提示如何發佈一個好的SQL問題。從[幫助頁面](http://stackoverflow.com/help/mcve)閱讀本指南也是值得的。遵循這些頁面上的建議應該會增加獲得正確答案的可能性。 –

回答

0

顯然,您將進入內部連接,ID = LocationID。

除此之外,這是關於你的'where'子句。你需要子查詢來獲得每個項目的最大值(日期),我猜測它是你失蹤的部分。

+0

是的,我剛剛更新了我的問題,我現在的表格看起來像 – MishMish

1

你可以嘗試以下查詢

對於requirement1

select 
    case when Location1 = 0 then null else Location1 end Location1, 
    case when Location2 = 0 then null else Location2 end Location2, 
    case when Location3 = 0 then null else Location3 end Location3 
from(
    SELECT 
     SUM(case when location_id = 'Location 1' then id else 0 end) Location1, 
     SUM(case when location_id = 'Location 2' then id else 0 end) Location2, 
     SUM(case when location_id = 'Location 3' then id else 0 end) Location3 
    from Product 
    group by ProdID) t1; 

下面是上面的查詢

enter image description here

對於requirement2的結果,

select 
    sum(case when Location2 = 0 then 1 else 0 end) Location1, 
    sum(case when Location3 = 0 and Location2 <> 0 then 1 else 0 end) Location2, 
    sum(case when Location3 = 0 then 0 else 1 end) Location3 
from(
    SELECT 
     SUM(case when location_id = 'Location 1' then id else 0 end) Location1, 
     SUM(case when location_id = 'Location 2' then id else 0 end) Location2, 
     SUM(case when location_id = 'Location 3' then id else 0 end) Location3 
    from Product 
    group by id) t1; 

下面是上面的查詢

enter image description here

注的結果:如果是的ProdID整數上述查詢纔有效。

希望這可以幫助你。

+0

您好Viki 您的查詢工作真的很好,但它似乎非常靜態。我計劃在最後加起來最多17個地點。動態的方法會使它更容易? – MishMish

相關問題