У меня есть следующий запрос, который предоставляет мне данные о деталях, значениях, расценках и количестве в каждом месте.Доходы из года в год Запрос SQL Server
Я пытаюсь получить годовой доход в зависимости от даты начала и окончания. Например, если выбранная дата была 2013-2015. Конечный результат будет создавать 3 столбца один для дохода в 2013 году, один для дохода за 2014 год и один доход за 2015 год.
Я новичок, и до сих пор не эксперт в написании запросов, но вот то, что я в настоящее время:
SELECT
department,
item,
itemdesc,
qty1,
qty2,
rate_1,
rate_2,
SUM(mm.days*mm.rate*mm.qty)
FROM
items it
LEFT JOIN
(SELECT
i.days, i.rate, i.days, ii.todate, ii.itemid
FROM
invoiceofitems ii
JOIN
invoices i on i.id = ii.id
WHERE
ii.todate BETWEEN @StartDate and @EndDate) mm ON mm.itemid = it.itemid
GROUP BY
department,
item,
itemdesc,
qty1, qty2,
rate_1, rate_2
ORDER BY
item
Однако это не дает мне с каждым годом агрегацию счета доходов, что я требуют.
Я знаю, что этого можно добиться посредством итерации через это. Но как бы я это сделал и с чего бы начать?
Должен ли я знать дату начала и окончания каждого года и проходить через это, а затем добавить счетчик к году до года = EndDate?
Я очень смущен. Помощь была бы оценена.
Зачем вам колонка на каждый год? Почему бы и нет? – Codeman
Ну, идея состоит в том, чтобы узнать, сколько доходов генерируется каждый год в зависимости от даты начала и окончания. Итак, я думаю, что колонка будет иметь наибольший смысл? Я ошибаюсь, чтобы предположить это? –
Я думаю, что разделение его на строки имеет смысл. Столбец SQL намного менее динамичен, чем строка. Вы должны использовать динамический SQL или сгенерированный SQL, чтобы получить вариант количества столбцов, тогда как с помощью строки вы можете просто сгруппировать их и получить то, что вы хотите – Codeman