2013-11-28 79 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