2013-10-21 45 views
0

我有一個要求,如下所示從兩個不同的表格中顯示以下格式的報告,下面的報告應按分部計算訂單號碼。分組依據來自兩個表格

=================================================================== 
Branch  OrdersCountInTable1   OrdersCountInTable2 
=================================================================== 
    100   5       2 
    200   10       10 
    300   12       11 

我怎樣才能實現這個使用sqlquery?

以下是列在表中:

Table1: 
________ 
- Branch 
- OrderNo 

Table2 
__________ 
- Branch 
- OrderNo 

表1數據:

 
=============================== 
Branch    OrderNo  
=============================== 
    100   1000     
    100   1001    
    200   2001 
    100   1003 

表2數據:

 
=============================== 
Branch    OrderNo  
=============================== 
    100   1000          
    200   2001 
    100   1003 

我們只是想調和的兩個表的訂單! ! 感謝您的寶貴意見。

+2

你能添加創建2個表,並增加了一些一些代碼示例數據,以便我可以查看您必須使用的工具 – justinf

+0

它是否是ReportingServer報告?只需知道您是否需要在源代碼級進行分組,或者您可以使用組功能將結果輸入到報告中。 – michele

回答

0

一個或多或少通用辦法做到這一點

SELECT COALESCE(t1.branch, t2.branch) branch, 
     COALESCE(t1.ordercount, 0) OrdersCountInTable1, 
     COALESCE(t2.ordercount, 0) OrdersCountInTable2 
    FROM 
(
    SELECT branch, COUNT(orderno) ordercount 
    FROM Table1 
    GROUP BY branch 
) t1 FULL JOIN 
(
    SELECT branch, COUNT(orderno) ordercount 
    FROM Table2 
    GROUP BY branch 
) t2 
ON t1.branch = t2.branch 

假設是表可能不是對所有分支機構的條目。這就是爲什麼使用FULL JOIN

+0

感謝您的完美答案。這就是我一直在尋找的東西。 – MAF

0

做這樣使用SUM聚合函數和UNION ALL操作

SELECT Branch, 
     SUM(CASE tag WHEN 'table1' THEN 1 ELSE 0 END) as OrdersCountInTable1, 
     SUM(CASE tag WHEN 'table2' THEN 1 ELSE 0 END) as OrdersCountInTable2 
FROM 
(

SELECT Branch,'table1' as tag 
FROM Table1 

UNION ALL 

SELECT Branch,'table2' as tag 
FROM Table2 

) z 

GROUP BY Branch 
ORDER BY Branch 
0

union嵌套查詢試試:

select 
    Branch, count(Orders1) OrdersCountInTable1, count(Orders2) OrdersCountInTable2 
from (
    select Branch,OrderNo Orders1,NULL Orders2 from Table1 
    union 
    select Branch,NULL Orders1,OrderNo Orders2 from Table2 
) t 
group by Branch