Sql server SQL Server中具有多个表的多个聚合函数

Sql server SQL Server中具有多个表的多个聚合函数,sql-server,function,aggregate,Sql Server,Function,Aggregate,我正在尝试获取输入人员的数据,我希望提取特定人员的发票号和行项目号数据 输出是 Entered_by No of line items CD 9 CD 136084 deepa 7 deepa 18 dolly 757 dolly 22350 kroshni 666 kroshni 16161 lokesh

我正在尝试获取输入人员的数据,我希望提取特定人员的发票号和行项目号数据

输出是

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

正如Joe所说,如果你给我们一个更详细的描述,我们可以给你更好的答案,但在此之前,实现这一点的捷径如下:

  • 摆脱工会
  • 将这两个查询转换为派生表
  • 根据输入的\ u从他们中进行选择
  • 例如


    你能澄清这三个表之间的关系吗?列
    invoice\u rid
    invoice\u fk
    invoice\u invoint\u rid
    invoice\u fk
    属于哪些表?
    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