У меня есть таблица представления, которая выглядит следующим образом:
И я начал создавать представление для суммирования по статусу для каждой валюты:
WITH C AS (SELECT * FROM CampaignsPublisherReportSummary)
SELECT
'Total' T,
SUM(CASE WHEN PayCurrency='USD' THEN Total END) USD,
SUM(CASE WHEN PayCurrency='EUR' THEN Total END) EUR,
SUM(CASE WHEN PayCurrency='GBP' THEN Total END) GBP,
SUM(CASE WHEN PayCurrency='AUD' THEN Total END) AUD
FROM C
UNION
SELECT
'ToBePaid' T,
SUM(CASE WHEN PayCurrency='USD' THEN ToBePaid END) USD,
SUM(CASE WHEN PayCurrency='EUR' THEN ToBePaid END) EUR,
SUM(CASE WHEN PayCurrency='GBP' THEN ToBePaid END) GBP,
SUM(CASE WHEN PayCurrency='AUD' THEN ToBePaid END) AUD
FROM C
GO
Я мог бы закончить и получить то, что я хочу, снова скопировав / вставив для каждого другого статуса (Неподтвержденный, Проверенный, и т. Д.), Но программист во мне хочет иметь какой-то видфункция, которая принимает имя статуса и запускает шаблонную версию запроса ...
ВОПРОС: Можно ли это сделать?Или есть другой лучший способ разбить информацию, которую я пропускаю?
ОБНОВЛЕНИЕ: Моя цель - получить что-то вроде этого:
SELECT * FROM #mytempfunc('Total')
UNION SELECT * FROM #mytempfunc('ToBePaid')
UNION ...