我有一个包含此查询的水晶报告:
SELECT DISTINCT T0.DocNum, T0.TaxDate, T2.OcrName, T1.U_Field_Wt, T1.Quantity, T3.CCTypeCode
FROM OIGN T0 INNER JOIN IGN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OOCR T2 ON T1.[OcrCode] = T2.[OcrCode]
INNER JOIN OPRC T3 ON T1.[OcrCode] = T3.[PrcCode]
WHERE T0.TaxDate BETWEEN {?StartDate} AND {?EndDate}
我有一家公司的财务期从每年的4月1日开始,到明年3月31日结束。
我想修改它,使得查询只需要一个参数,即。 {?EndDate}
并根据开始日期返回结果,即开始日期和结束日期为输入的任何日期。从而显示年初至今的结果。我该如何实现这一目标?
答案 0 :(得分:1)
试试这个:
@startdate = DATEADD(YEAR,
(CASE WHEN DATEPART(MM, @enddate) <= 3 THEN -1 ELSE 0 END),
CONVERT(DATE, CONVERT(VARCHAR(4), DATEPART(YEAR, @enddate)) + '-04-01'));
或者,
@startdate = CONVERT(DATE,
CONVERT(VARCHAR(4),
DATEPART(YEAR, @enddate) -
(CASE WHEN DATEPART(MM, @enddate) <= 3 THEN 1 ELSE 0 END)) + '-04-01');