问题描述
我需要帮助,我编写了代码,并且必须在语句中使用用户参数>> [%1]中的 Last Date 但是当我执行..填充的窗口时,迫使我从最后一个日期到第一个日期进行填充。它应该从第一个日期到最后一个日期填写。
当我执行...“用户窗口”弹出窗口时,需要输入从第一个日期到最后一个日期的日期(例如:01/08/20-30/09/20),但是从上面的编码中可以看出,
用户必须输入最后一个日期到第一个日期(例如:30/09/20-01/08/20) 我已附上图片,您可以清楚看到它>>>>
Select
T0.docnum,T0.docdate,Sum(T1.Quantity),Sum(case when T0.docdate between dateadd(month,DATEADD(DAY,1-DATEPART(day,'[%1]'),'[%1]')) and eomonth(dateadd(month,'[%1]'))) then T1.Quantity*T2.U_hmc_vollts else 0 end) as 'm12_Lts',sum(case when T0.docdate between dateadd(month,-1,1-
DATEPART(day,'[%1]'))) then T1.Quantity*T2.U_hmc_vollts else 0 end) as 'm11_Lts'
From OINV T0
left join inv1 T1 on T0.DocEntry = T1.DocEntry
left join oitm T2 on T1.ItemCode = T2.ItemCode
Where
T0.docdate >= '[%0]' and T0.Docdate <= '[%1]'
Group By
T0.docnum,T0.Docdate
解决方法
尝试插入
/*SELECT FROM [dbo].[OWTR] p1*/
declare @FROM as Datetime
declare @TO as datetime
/* WHERE */
set @FROM = /* p1.docdate */ '[%0]'
set @TO = /* p1.docdate */ '[%1]'
位于查询顶部(表并不重要) 然后在其余查询中将[%0]替换为@FROM,将[%1]替换为@TO。
完整代码:
/*SELECT FROM [dbo].[OWTR] p1*/
declare @FROM as Datetime
declare @TO as datetime
/* WHERE */
set @FROM = /* p1.docdate */ '[%0]'
set @TO = /* p1.docdate */ '[%1]'
Select
T0.docnum,T0.docdate,Sum(T1.Quantity),Sum(case when T0.docdate between dateadd(month,DATEADD(DAY,1-
DATEPART(day,@TO),@TO)) and eomonth(dateadd(month,1-
DATEPART(day,@TO))) then T1.Quantity*T2.U_hmc_vollts else 0 end) as
'm12_Lts',sum(case when T0.docdate between dateadd(month,-1,@TO))) then T1.Quantity*T2.U_hmc_vollts else 0 end) as
'm11_Lts'
From OINV T0
left join inv1 T1 on T0.DocEntry = T1.DocEntry
left join oitm T2 on T1.ItemCode = T2.ItemCode
Where
T0.docdate >= @FROM and T0.Docdate <= @TO
Group By
T0.docnum,T0.Docdate
让我知道你的生活。
,将order by
添加到您的SQL语句中。