0

我正在尝试加入 4 个表以获得几列结果,其中两个是它们各自列的总和/聚合。我的查询返回真实总和的倍数。这是我所拥有的:

select pl.[Vendor Item No_], bc.[Item No_], min(ile.[Description]) as 'Item Description',
        sum(ile.[Quantity]) as 'Quantity On Hand', 
        bc.[Bin Code] as 'Item Location'
 from [live$Bin Content]bc left outer join [live$purchase line]pl
  on bc.[Item No_] = pl.[No_]left outer join [live$item ledger entry] ile
  on bc.[Item No_] = ile.[Item No_]
where bc.[Bin Code] like 'ANNEX BACK'
and   bc.[Item No_] like 'sk%'


group by pl.[Vendor Item No_], bc.[Item No_], pl.[Description], bc.[Bin Code]
4

1 回答 1

1

使用子查询/内联视图可能会解决您的问题。假设一切正常。要确定,我们需要知道所有 3 个表之间的 PK/FK 关系。

SELECT pl.[Vendor Item No_], 
       bc.[Item No_], 
       min(ile.[Description]) as 'Item Description',
       ile.[Quantity] as 'Quantity On Hand', 
       bc.[Bin Code] as 'Item Location'
 FROM [live$Bin Content] bc 
 LEFT JOIN [live$purchase line] pl
  on bc.[Item No_] = pl.[No_]
 LEFT JOIN  (SELECT sum(quantity) as Quantity, [Item no_] 
             FROM [live$item ledger entry] 
             GROUP BY [Item no_]) ile
  on bc.[Item No_] = ile.[Item No_]
where bc.[Bin Code] like 'ANNEX BACK'
and   bc.[Item No_] like 'sk%'
group by pl.[Vendor Item No_], bc.[Item No_], pl.[Description], bc.[Bin Code]

根据评论...如果您想添加另一个表格并汇总数量...

   SELECT pl.[Vendor Item No_], 
           bc.[Item No_], 
           min(ile.[Description]) as 'Item Description',
           ile.[Quantity] as 'Quantity On Hand', 
           bc.[Bin Code] as 'Item Location'
     FROM [live$Bin Content] bc 
     LEFT JOIN [live$purchase line] pl
      on bc.[Item No_] = pl.[No_]
     LEFT JOIN  (SELECT sum(quantity) as Quantity, [Item no_] 
                 FROM [live$item ledger entry] 
                 GROUP BY [Item no_]) ile
      on bc.[Item No_] = ile.[Item No_]
     LEFT JOIN  (SELECT sum(NEWFIELD) as Quantity, [Item no_] 
                 FROM [newTable] 
                 GROUP BY [Item no_]) newAlias
      on bc.[Item No_] = newAlias.[Item No_]
    where bc.[Bin Code] like 'ANNEX BACK'
    and   bc.[Item No_] like 'sk%'
    group by pl.[Vendor Item No_], bc.[Item No_], pl.[Description], bc.[Bin Code]

但是,如果该字段位于现有表之一中,则只需将其添加为子查询中的新字段...

SELECT pl.[Vendor Item No_], 
       bc.[Item No_], 
       min(ile.[Description]) as 'Item Description',
       ile.[Quantity] as 'Quantity On Hand', 
       bc.[Bin Code] as 'Item Location',
       ile.count as count of items with inventory in ILE.
 FROM [live$Bin Content] bc 
 LEFT JOIN [live$purchase line] pl
  on bc.[Item No_] = pl.[No_]
 LEFT JOIN  (SELECT sum(quantity) as Quantity, count(Quantity) as count, [Item no_] 
             FROM [live$item ledger entry] 
             GROUP BY [Item no_]) ile
  on bc.[Item No_] = ile.[Item No_]
where bc.[Bin Code] like 'ANNEX BACK'
and   bc.[Item No_] like 'sk%'
group by pl.[Vendor Item No_], bc.[Item No_], pl.[Description], bc.[Bin Code]
于 2015-07-23T20:17:27.253 回答