2015-12-18 2 views
0

Первого запросаЗерноуборочных 2 агрегатных запросы: отображение результатов в одной строке (DB2)

SELECT count(*) AS TAXTOTAL 
FROM T_tx_tax_report rpt 
    INNER JOIN T_TX_TAX_REPORT_TRANSACTION trans 
    ON rpt.TAX_REPORT_ID = trans.TAX_REPORT_ID 
WHERE rpt.created_ts < '10/01/2015' 
     AND trans.TAX_REPORT_SOURCE NOT IN ('MIGR') 
GROUP BY (rpt.created_ts), trans.TAX_REPORT_SOURCE, rpt.TOTAL_WAGES 
ORDER BY (rpt.created_ts) DESC, trans.TAX_REPORT_SOURCE ASC 

Второго запрос

SELECT count(*) AS TAXTOTAL 
FROM T_tx_tax_report rpt 
    INNER JOIN T_TX_TAX_REPORT_TRANSACTION trans 
    ON rpt.TAX_REPORT_ID = trans.TAX_REPORT_ID 
WHERE rpt.created_ts = '10/01/2015' 
     AND trans.TAX_REPORT_SOURCE NOT IN ('MIGR') 
GROUP BY (rpt.created_ts), trans.TAX_REPORT_SOURCE, rpt.TOTAL_WAGES 
ORDER BY (rpt.created_ts) DESC, trans.TAX_REPORT_SOURCE ASC 

created_ts условие в ИНЕКЕ является единственным различием между 2 запросами. Объедините запросы, чтобы показать результат в одной строке. БЛАГОДАРЮ.

  No. Prior to    No. On 
      10/01/2015    10/1/2015   Total No.  
a      5     1     6 
b      10     3     13 
+0

mmhhh вам нужно редактировать. Это просто ужасно -> http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ –

ответ

0

Вам просто нужно просто сложить вхождения, где один или другое условие истинно, то вдоль этих линий:

SELECT 
    ..., 
    sum(case when rpt.created_ts < '10/01/2015' then 1 end) "No. Prior to date", 
    sum(case when rpt.created_ts = '10/01/2015' then 1 end) "No. On date", 
    count(*) as "Total No." 
FROM T_tx_tax_report rpt 
INNER JOIN T_TX_TAX_REPORT_TRANSACTION trans 
ON rpt.TAX_REPORT_ID =  trans.TAX_REPORT_ID 
where rpt.created_ts <= '10/01/2015' 
... 
Смежные вопросы