2013-11-28 110 views
-1

我有以下表格。每個標題都有一個狀態和下面的許多框。每個框包含多行,併爲每個特定行多個其他行。這裏是我的查詢:鏈接多表混淆

select 
    Header.all, 
    count(no of available boxes), 
    count(number of available received lines), 
    sum(line_table.qty), 
    sum(receivedline_table.qty) 

where 
    HeaderNo like %something% 

Header_Table

[HeaderID] [HeaderNo] [Ref] [StatusID] 
----------------- 
1 ||HNO1 ||Ref1 ||1 
2 ||HNO2 ||Ref2 ||2 

Header_status_Table

[HeaderStatusID] [statusDesc] 
----------------- 
1 ||Desc1 
2 ||Desc2 
3 ||Desc3 

Box_table

[BoxID] [HeaderID] [BoxNo] 
----------------- 
1 ||1 ||BNo1 
2 ||1 ||BNo2 
3 ||2 ||BNo3 

Line_table

[LineID] [BoxID] [QTY] [HeaderID] 
----------------- 
1 ||1 ||15 ||1 

2 ||1 ||2 ||1 

ReceivedLine_Table

[RecievedID] [LineID] [qty] 
----------------- 
1 ||1 ||5 
2 ||1 ||10 

我寫了下面的腳本,但遺憾的是它不工作,我期望的那樣。

SELECT H.ID, H.No, H.Ref1, H.Ref2, H.Ref3, HS.StatusDesc, sum(isnull(LR.ReceivedQty,0)) as ReceivedQTY, sum(isnull(L.OrderedQty,0)) as OrderedQTY, count(L.Lineid) as NoLines , count(B.BoxID) as NoBoxes 
     FROM Header H 
     left outer JOIN HeaderStatus HS ON H.StatusID = HS.StatusID 
     left join Box B on B.ID = H.ID 
     left join Line L on L.BoxID = B.BoxID 
     left join LineReceived LR on L.Lineid = LR.LineID 
     where H.No like '%%' 
     group by H.ID, H.No, HS.StatusDesc, H.Ref1, H.Ref2, H.Ref3 
+0

「不像我期望的那樣工作」不是一個好的錯誤描述; _how_是否讓你失望?另外,根據您的樣本數據,我們能否請您獲得您想要的結果?雖然我有一種感覺,這可能是一個常見的'重複行'問題... –

+0

我想選擇一個標題。*具有特定狀態+標題欄數+接收行數+接收數量總和+總和行數量 –

+0

[]中的單詞是列的名稱,而下面的任何單詞都是由||分隔的數據。 –

回答

0

最後我解決了它,我只是我的選擇腳本中單獨選擇,數據不貶損和ASNBox B,其中乙似乎也 HS.statusdesc的狀態, (SELECT COUNT(B.ASNBoxID) .ASNID = H.ASNID)as NumberOfBoxes