2013-09-04 3 views
0

Я пытаюсь понять вопрос, когда сегодня подпадает под этот финансовый год (1/11 - 31/10). Запустите этот набор отчетов Case, но когда сегодня идет следующий финансовый год следующий набор и т. д.Вложения в регистр вложений

Я пробовал вложенные операторы CASE, но не работал. Ниже приводится только то, что я пытаюсь сделать.

Спасибо, что посмотрели!

IF Getdate() Between '2012-11-01 00:00' AND '2013-10-31 23:59' -- is it this year? 

THEN 
     CASE 
     WHEN B.saledate Between '2011-11-01 00:00' AND Getdate()-365 THEN 'Yes' 
     WHEN B.saledate Between '2012-11-01 00:00' AND Getdate() THEN 'Yes' 
     Else 'No' 
     AS 'Financial year to date', 
     END 

IF Getdate() Between '2013-11-01 00:00' AND '2014-10-31 23:59' -- is it this year yet? 
THEN 
     CASE 
     WHEN B.Created Between '2011-11-01 00:00' AND Getdate()-730 THEN 'Yes' 
     WHEN B.Created Between '2012-11-01 00:00' AND Getdate()-365 THEN 'Yes' 
     WHEN B.Created Between '2013-11-01 00:00' AND Getdate() THEN 'Yes' 
     Else 'No' 
     AS 'Financial year to date', 
     END 

END 
+0

Я добавил решение о том, как получить финансовый год каждой строки. Если вы объясните, что вы хотите с этим сделать, я могу предоставить дополнительную информацию. –

ответ

0

Благодарим за помощь, но ключ к этому финансовому году на сегодняшний день, а не только финансовый год.

Решение, указанное ниже. Это означает добавление новых блоков каждый год, но сейчас я нахожусь здесь.

CASE 
     WHEN 
     Getdate() Between '2012-11-01 00:00' AND '2013-10-31 23:59' AND 
     (
     cast(convert(char(11), B.Created, 10) as datetime) Between '2009-11-01 00:00' AND (cast(getdate()-1096 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2010-11-01 00:00' AND (cast(getdate()-731 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2011-11-01 00:00' AND (cast(getdate()-366 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2012-11-01 00:00' AND (cast(getdate() as date)) 
     ) 
     THEN 'Yes' 

     WHEN Getdate() Between '2013-11-01 00:00' AND '2014-10-31 23:59' AND 
     (
     cast(convert(char(11), B.Created, 10) as datetime) Between '2009-11-01 00:00' AND (cast(getdate()-1461 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2010-11-01 00:00' AND (cast(getdate()-1096 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2011-11-01 00:00' AND (cast(getdate()-731 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2012-11-01 00:00' AND (cast(getdate()-366 as date)) OR 
     cast(convert(char(11), B.Created, 10) as datetime) Between '2013-11-01 00:00' AND (cast(getdate() as date)) 
     ) 
     THEN 'Yes' 

Else 'No' 
END 
AS 'Financial year to date', 
0

Таким образом, вы получите все увеличивающийся код.

Чтобы получить определенный финансовый год ою может попробовать, что:

DECLARE @DateToCheck AS DATETIME 

SET @DateToCheck = '20130101' 

SELECT YEAR(DATEADD(mm,-10,@DateToCheck)) 

Так что, если у вас есть таблица Transactions с полем DateTime TransactionDate

SELECT YEAR(DATEADD(mm,-10,TransactionDate)) 
FROM Transactions 

поможет вам финансовый год каждой сделки ,

Смежные вопросы