Вывод, который необходимо произвести
используя это как ссылку, но теперь с другим сценарием запрос SQL Server: получить сумму условно< /а>
пояснение:
Столбцы «Элемент», «Продажи» и «Примечания» представляют собой столбец из базы данных. Столбец «Новые продажи» представляет собой сформулированный столбец, в котором он получает сумму элементов с одинаковыми примечаниями по ключевым словам, за исключением примечаний по умолчанию n/a.
(несмотря на то, что примечания не полностью идентичны, по крайней мере, есть общее сходство, как на изображении выше - в пункте 5 есть «новое», но он суммируется с пунктом 6, потому что их похожее ключевое слово найдено «маленький»)
используемый код
ПЕРВЫЙ ВАРИАНТ — использование раздела. Это не работает, потому что, когда примечания не идентичны друг другу, сумма не будет получена должным образом (для элемента 5 и элемента 6).
CASE
WHEN ([remarks] not like '%big%') AND ([remarks] not like '%PAENGS%')
THEN sales
ELSE SUM(sales) OVER(PARTITION BY [remarks])
END as 'New Sales'
ВТОРОЙ ВАРИАНТ — использование перекрестного применения. Так что я оставляю это, но я растерялся, так как он не дает желаемого результата.
CROSS APPLY
SELECT
d.*,
NewSales =
CASE
WHEN ([remarks] not like '%big%') or ([remarks] not like '%small%')
THEN Sales
ELSE x.NewSales
END
FROM #MSRSuperFinal3 d
CROSS APPLY(SELECT NewSales = SUM(Sales)
FROM #MSRSuperFinal3
WHERE ([remarks] like '%big%') or ([remarks] like '%small%')
)x
Любая помощь будет высоко оценена