Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Pivot 2 агрегата  [new]
fury_fury
Member

Откуда:
Сообщений: 96
Добрый день
Прошу помощи, совета
Нужно добавить во внешний селект поле "Количество", значение которого получаем в каждом из юнионов,
и развернуть по трем измерениям (departmentID,orderTypeID,Дата)
Подскажите пожалуйста, как можно решить задачу


+
SELECT 
	 pvt.departmentID
	,pvt.orderTypeID
	,pvt.Дата
     --,pvt.Количество   нужно добавить
	,pvt.[cookingBillTime]
	,pvt.[cookingDispTime]

FROM (

SELECT  ope.[department] as 'departmentID' 
	  ,CAST(ope.[openTime] AS DATE) as 'Дата'
	  ,ope.[orderType] as 'orderTypeID' 
	  ,'cookingBillTime' as 'Тип_показателя'
	  ,CAST(DATEDIFF(SECOND,d.[openTime],d.[billTime]) AS decimal(5,1))/60 as 'Время'
	  ,COUNT(d.orderId) as 'Количество'

  FROM [dbo].[FactDelivery] d 
  INNER JOIN [dbo].[FactOrderPaymentEvent] ope ON ope.orderID = d.orderId 
  GROUP BY ope.[department],CAST(ope.[openTime] AS DATE),ope.[orderType]

UNION ALL

SELECT  ope.[department] as 'departmentID' 
	  ,CAST(ope.[openTime] AS DATE) as 'Дата'
	  ,ope.[orderType] as 'orderTypeID' 
	  ,'cookingDispTime' as 'Тип_показателя'
	  ,CAST(DATEDIFF(SECOND,ce.[startCooking1Time],ce.[readyTime]) AS decimal(5,1))/60 
          ,COUNT(d.orderId) as 'Количество'

  FROM [dbo].[FactOrderPaymentEvent] ope     
  INNER JOIN [dbo].[FactCOrderPayment] ce ON ce.[orderID] = ope.[orderId]
  GROUP BY ope.[department],CAST(ope.[openTime] AS DATE),ope.[orderType]

  ) a
  PIVOT 
  (SUM(a.[Время])
  FOR a.Тип_показателя IN ([cookingBillTime],[cookingDispTime]) ) pvt
19 апр 16, 20:10    [19079600]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить