2011-04-12 87 views
0

我想爲輸入的人員獲取數據,我想爲特定人員提取數據爲No of invoices和No of line items。在SQL Server中有多個表的多個集合函數

輸出是

Entered_by No of line items 
CD    9 
CD    136084 
deepa    7 
deepa    18 
dolly    757 
dolly    22350 
kroshni   666 
kroshni   16161 
lokesh   4 
lokesh   999 
MHeera   639 
MHeera    20427 
nandini   7 
nandini   5318 

這裏的數據沒有訂單項被混合的兩個「無行項目」和計數「的發票不」,我想告訴喜歡

Entered_by No of line items No of invoices 
CD    136084    9 
deepa    18    7 
dolly    22350    757 

請幫我這個人... ..

這裏是T-SQL查詢

select ENTERED_BY, count(entered_by) 'NO OF LINE ITEMS' 
from im_invoice, im_invoice_line_item, im_invoice_inventory 
where invoice_rid = invoice_fk 
and invoice_inventory_rid = invoice_inv_fk 
and enter_date between dateadd(mm, -3, getdate()) and dateadd(mm,0,getdate()) 
group by entered_by 

union 

select entered_by, count(invoice_num) 'NO OF INVOICES' from im_invoice 
where enter_date between dateadd(mm, -3, getdate()) and dateadd(mm,0,getdate()) 
group by entered_by 
+0

您能澄清三張表之間的關係嗎?哪些表「invoice_rid」,「invoice_fk」,「invoice_inventory_rid」和「invoice_inv_fk」屬於? – 2011-04-12 14:43:45

回答

1

喬說,如果你給我們一個更詳細的描述,我們可以給你更好的答案,但在那之前,快速和骯髒的方式來完成,這是如下:

  1. 擺脫工會
  2. 將2個查詢轉換爲派生表
  3. 從中選擇加入entered_by。

例如,

SELECT LineItems.ENTERED_BY, [NO OF LINE ITEMS], [NO OF INVOICES] 
FROM 
(SELECT ENTERED_BY,COUNT(entered_by) 'NO OF LINE ITEMS' 
FROM im_invoice, im_invoice_line_item,im_invoice_inventory 
WHERE invoice_rid = invoice_fk 
AND invoice_inventory_rid = invoice_inv_fk 
AND enter_date BETWEEN dateadd(mm, -3, getdate()) AND dateadd(mm,0,getdate()) 
GROUP BY entered_by) AS LineItems 
INNER JOIN 
(SELECT entered_by, count(invoice_num) 'NO OF INVOICES' 
FROM im_invoice 
WHERE enter_date BETWEEN dateadd(mm, -3, getdate()) AND dateadd(mm,0,getdate()) 
GROUP BY entered_by) AS invoices 
ON invoices.entered_by = LineItems.ENTERED_BY