1

年ごとにグループ化された統合レポートを示すこのデータがあります。私が使用したのは単純な GROUP BY YEAR(BookingDate)句で、すべてが正常に機能します。しかし、私が望むのは、通常の暦年ではなく、会計年度(1 Aprilto )になる年です。では、どうすればこれを行うことができますか?31 Mayクエリは..

SELECT 
    CONVERT(VARCHAR(25), c.Duration) AS Duration, 
    COALESCE(c.totalbookings, 0) AS totalbookings
FROM
    (SELECT 
               YEAR(bookingdate) AS Duration, 
               COUNT(*) AS totalbookings 
           FROM 
               entbookings
            WHERE BranchId=@Branchid
           GROUP BY YEAR(bookingdate)
    ) AS c 
LEFT OUTER JOIN 
    (SELECT 
               Duration, 
               SUM(totalitems) 'bkdqty'
           FROM 
               [yrItemWISeTotalQty] (@BranchId) AS BkdQty
           GROUP BY Duration
    ) AS d 
ON c.Duration = d.Duration

は次のyrItemWISeTotalQtyように定義されます

CREATE FUNCTION [dbo].[yrItemWiseTotalQty]
(
@BrachId VARCHAR(MAX)
) 

RETURNS TABLE AS
    RETURN
SELECT 
    YEAR(EntBookings.BookingDate) AS Duration, 
    Sum(dbo.EntBookings.ItemCost) AS totalcost,
WHERE   EntBookings.BranchId = @BrachId
GROUP BY Year(EntBookings.BookingDate)

繰り返しになりますが、私はそれを使用GROUP BY Year()してうまく機能しますが、fy ie(4月1日から3月31日)を取るように変更する必要があります。どうすればいいですか?

4

2 に答える 2

1

これを試して:

SELECT 
    case when month(EntBookings.BookingDate) <4
         then YEAR(EntBookings.BookingDate)-1
         else YEAR(EntBookings.BookingDate) end  AS Duration, 
    Sum(dbo.EntBookings.ItemCost) AS totalcost
WHERE   EntBookings.BranchId = @BrachId
GROUP BY case when month(EntBookings.BookingDate) <4 
         then YEAR(EntBookings.BookingDate)-1 
         else YEAR(EntBookings.BookingDate) end as [year]
于 2012-08-28T12:36:10.840 に答える
0


getFinancialYear(Data[TimeStamp] )
会計年度番号を返すSQL 関数を定義し、それを使用して and でグループ化します。
いえ

...
GROUP BY getFinancialYear(BookingDate)
...
于 2012-08-28T13:06:37.277 に答える