SQL Server 2008 SSRS Всего / Объединить значения из двух таблиц для вывода в набор данных - PullRequest
0 голосов
/ 17 мая 2011

У меня есть отчет SSRS, который должен переключаться между тремя различными наборами данных, т.е. типами заказов = Расходные материалы, Сервис и Итого.

У меня есть два запроса, один для расходных материалов и один для обслуживания, как показано ниже.Я пытался создать союз между ними, но, похоже, он не суммирует результаты, то есть складывая их вместе.Как я могу это сделать?

SELECT COUNT(orderheader.orderid)             AS [Consumable Order Amount], 
       CONVERT(DATE, orderheader.datecreated) AS [Date], 
       CASE 
         WHEN orderheader.webref = '' THEN 'Call Centre' 
         ELSE 'Web' 
       END                                    AS [Order Type] 
FROM   orderheader 
WHERE  CONVERT(DATE, orderheader.datecreated) >= '21 February 2011' 
       AND CONVERT(DATE, orderheader.datecreated) <= '20 March 2011' 
GROUP  BY CONVERT(DATE, orderheader.datecreated), 
          CASE 
            WHEN orderheader.webref = '' THEN 'Call Centre' 
            ELSE 'Web' 
          END 

SELECT COUNT(serviceid)           AS [Service Order Amount], 
       CONVERT(DATE, datecreated) AS [Date], 
       CASE 
         WHEN serviceorder.webref = '' THEN 'Call Centre' 
         ELSE 'Web' 
       END                        AS SOURCE 
FROM   serviceorder 
WHERE  ( CONVERT(DATE, datecreated) >= '21 February 2011' ) 
       AND ( CONVERT(DATE, datecreated) <= '20 March 2011' ) 
GROUP  BY CONVERT(DATE, datecreated), 
          CASE 
            WHEN serviceorder.webref = '' THEN 'Call Centre' 
            ELSE 'Web' 
          END 
ORDER  BY [Date] 

1 Ответ

1 голос
/ 17 мая 2011

Можете ли вы попробовать что-то подобное для комбинированного набора данных?

;WITH Combined AS
(
    SELECT orderid AS id,
        datecreated as [datecreated],
        webref as [webref]
    FROM orderheader
    UNION ALL
    SELECT serviceid AS id,
        datecreated as [datecreated],
        webref as [webref]
    FROM serviceorder
)
SELECT COUNT(id) AS [Service Order Amount], 
       CONVERT(DATE, datecreated) AS [Date], 
       CASE 
         WHEN webref = '' THEN 'Call Centre' 
         ELSE 'Web' 
       END AS SOURCE 
FROM   Combined 
WHERE  ( CONVERT(DATE, datecreated) >= '21 February 2011' ) 
       AND ( CONVERT(DATE, datecreated) <= '20 March 2011' ) 
GROUP  BY CONVERT(DATE, datecreated), 
          CASE 
            WHEN webref = '' THEN 'Call Centre' 
            ELSE 'Web' 
          END 
ORDER  BY [Date]
...