2013-05-29 79 views
0

需要一些幫助/方向......SQL查詢 - 聯想從一個查詢結果到另一個查詢沒有相關領域

我有一個查詢,讓我在許多地方需要庫存清單.. 。
-Location
-SKU
-QtyNeeded

我有另一個查詢,讓我提供庫存清單...和庫存連載(唯一的編號)。
-SKU
-SerialNumber

,我試圖去......最終的結果是運行一個查詢,將根據他們需要爲每個SKU的數量可SerialNumbers分配到某個位置他們需要。

實施例...

查詢1
商店1 SKU1 2
商店1 SKU2 1
商店2 SKU1 1
商店2 SKU2 2

QUERY2
SKU1 SERIAL1
SKU1 serial2
SKU1 s erial3
SKU1 serial4
SKU1 serial5
SKU2 serial6
SKU2 serial7
SKU2 SERIAL8
SKU2 serial9
SKU2 serial10
SKU3 serial11
SKU3 serial12

期望的結果...
商店1 SKU1 SERIAL1
St ORE1 SKU1 serial2
商店1 SKU2 serial6
商店2 SKU1 serial3
商店2 SKU2 serial7
商店2 SKU2 SERIAL8

謝謝!
達林

+0

在預期的結果中,serial1和serial2是否重複了相同的數字?顯然,您必須將這些表格加入到SKU中,但尚不清楚您是否試圖重複QtyNeeded數量的結果。如果期望的結果是不同的,那麼您只是在尋找一個常規聯接。 – StevenWhite

回答

0

使用遞歸CTE(公用表表達式),用於查詢1力圖把

 
Store1 SKU1 2 
Store1 SKU2 1 
Store2 SKU1 1 
Store2 SKU2 2 

 
Store1 SKU1 2 1 
Store1 SKU1 2 2 
Store2 SKU1 1 3 
Store1 SKU2 1 1 
Store2 SKU2 2 2 
Store2 SKU2 2 3 

然後使用ROW_NUMBER() OVER()添加行號來查詢2:

 
SKU1 serial1 1 
SKU1 serial2 2 
SKU1 serial3 3 
SKU1 serial4 4 
SKU1 serial5 5 
SKU2 serial6 1 
SKU2 serial7 2 
SKU2 serial8 3 
SKU2 serial9 4 
SKU2 serial10 5 
SKU3 serial11 1 
SKU3 serial12 2 

然後,您應該可以將所添加的新行號和SKU#一起加入結果。

編輯-----------

添加CTE例如:

;with LocationQtyData as(
select 
    location, sku, qtyneeded, 1 as rowNum 
from #LocationQtys 
union all 
select 
    #LocationQtys.location, #LocationQtys.sku, #LocationQtys.qtyneeded, rowNum + 1 as rowNum 
from #LocationQtys 
join LocationQtyData 
    on LocationQtyData.location = #LocationQtys.location 
    and LocationQtyData.sku = #LocationQtys.sku 
where LocationQtyData.rowNum < #LocationQtys.qtyneeded 
) 

select * from LocationQtyData 
order by 
location, sku, qtyneeded, rowNum 

請以你的表名#LocationQtys。注意查詢中的「union all」部分,我們可以引用CTE的名稱(「LocationQtyData」)以遞歸方式通過它。 where子句告訴它何時終止遞歸。

+0

liebs19 ...這個概念對我有意義。我很擅長在query2上添加Row_Number ......但是,我還沒有編寫CTE表達式(更不用說遞歸語句),這是query1所需的。我會做一些Google搜索。但是,希望你也可以提供一些指導。 – Darin

+0

請參閱編輯原始帖子以獲取CTE的樣本。 – liebs19

+0

謝謝liebs19!這讓我走上了正軌......唯一需要添加的是添加Row_Number。我無法讓遞歸CTE通過sku輸出「rowNum」,因爲qtyneeded被綁定到商店。因此,每個sku的每個商店的rowNum將重置爲1。但是,R(CTE)確實爲每個store/sku/qtyneeded輸出了正確的行數。因此,在select語句中很容易添加Row_Number(由SKU order by SKU分區)。 – Darin

相關問題