Sql за финансовый год - помощь?
У меня есть следующий SQL. Он дает результаты за календарный год. Мне это нужно, чтобы дать результаты за финансовый год (июль-июнь). У меня есть только одно поле "SQL-выражение", в которое я могу вставить код, поэтому должен быть запущенный код, если это имеет смысл?
Литой(сумма(случай, когда функция datediff(гггг,getdate (), то[vBoGiftsReceived].[GiftDate]) = 0, то [vBoGiftsReceived].[GiftAmount] ELSE 0 END) как десятичное число(10, 2))
Спасибо!!
Что я уже пробовал:
Я думаю, что мне нужно что-то сделать с getdate, но понятия не имею, что именно!
Herman<T>.Instance
SQL-инъекция. Всегда нет идти!
В чем конкретно заключается ваша проблема? Не могу заглянуть тебе в голову
rach_303
Спасибо за ваш ответ. Извините, я только новичок и теперь уверен в протоколах.
В нашей базе данных мы используем запросы, но все это делается через Мастер-конструктор, так что никакого фактического кодирования нет. Однако для этого конкретного запроса SQL был введен в пользовательское поле "выражение SQL", которое я вставил выше.
Запрос просматривает GiftDate в таблице vBoGiftsReceived и с помощью текущей системной даты (getdate) суммирует подарки, датированные в течение текущего календарного года. Это повторяется с использованием -1 -2 и т. д., Чтобы посмотреть на предыдущие календарные годы.
Я хотел бы знать, есть ли способ изменить этот SQL для суммирования подарков, полученных за финансовый год, на основе даты подарка и текущей даты. Финансовый год будет июль-июнь.
Спасибо!
CHill60
Ладно, я сдаюсь. Где находится SQL-инъекция в коде?
Herman<T>.Instance
"У меня есть только одно поле" SQL-выражение", в которое я могу вставить код".....
rach_303
Извините, я действительно не знаю, что это значит?!
CHill60
sql-инъекция - это место, где пользовательский ввод может быть использован для злонамеренного изменения базы данных- см. SQL-инъекция - OWASP[^]
Я не согласен с дигиманом - я думаю, что они неправильно поняли ваш смысл.
rach_303
Ах да, определенно недоразумение! Так что я нашел и это. Я предполагаю, что это весь код для этого запроса. Разве это делает его более ясным? Я понятия не имею, как использовать то, что вы предложили ниже.
SELECT CAST(SUM(CASE WHEN datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate]) = 0 THEN [vBoGiftsReceived].[GiftAmount] ELSE 0 END) AS DECIMAL(10, 2)) AS [2018], CAST(SUM(CASE WHEN datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate]) = -1 THEN [vBoGiftsReceived].[GiftAmount] ELSE 0 END) AS DECIMAL(10, 2)) AS [2017], CAST(SUM(CASE WHEN datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate]) = -2 THEN [vBoGiftsReceived].[GiftAmount] ELSE 0 END) AS DECIMAL(10, 2)) AS [2016], CAST(SUM(CASE WHEN datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate]) = -3 THEN [vBoGiftsReceived].[GiftAmount] ELSE 0 END) AS DECIMAL(10, 2)) AS [2015], CAST(SUM(CASE WHEN datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate]) = -4 THEN [vBoGiftsReceived].[GiftAmount] ELSE 0 END) AS DECIMAL(10, 2)) AS [2014] FROM vBoGiftsReceived WHERE ((abs(datediff(yyyy,getdate(),[vBoGiftsReceived].[GiftDate])) <= 5) AND [vBoGiftsReceived].[PartyId] = '88590bf7-a0e4-4582-8b19-73c9a396a4ec')