select convert(varchar(5),ddate,10) as 日期, ds.cDCName as 区域, convert(decimal(20,2),(sum(iQuantity))) as 订货数量, convert(decimal(20,2),(sum(iNatSum))) as 订货总金额, enum.enumname as 用途 from SO_SOMain as som left join SO_SODetails as sod on som.id = sod.ID left join Customer as cr on som.cCusName = cr.cCusName left join districtclass as ds on cr.cDCCode = ds.cDCCode left join AA_enum as enum on sod.TJHG1_ipurpose = enum.EnumCode and enum.EnumType = 'TJHG1_Purposetype' where dDate between '${if (day(today())>26,todate(date(year(today()),month(today()),'25')),todate(date(year(today()),month(today())-1,'26')))}' and convert(varchar(100),GETDATE(),23) group by dDate,cDCName,enum.EnumName order by dDate,cDCName
13352013513(提问者)我也在考虑用convert代替strftime不过有点难度和难题,首先它案例条件中的left(monthdelta(\"1997-01-01\",mod((datetonumber(now())-datetonumber((a))/1000,12),7))还没看懂,其次我的查询语句已经在用的条件是where dDate between
(
case
when DAY(convert(varchar(100),GETDATE(),23))< 26 then convert(nvarchar(30),convert(nvarchar(8),dateadd(month,-1,convert(varchar(100),GETDATE(),23)),120)+\'26\',120)
--如果条件abc日期(天)取值小于等于26则将日期变换为上个月26号7:30:00
when DAY(convert(varchar(100),GETDATE(),23)) > 26 then convert(nvarchar(30),convert(nvarchar(8),convert(varchar(100),GETDATE(),23),120)+\'26\',120)
--如果条件abc日期(天)取值大于26号则将日期变换为本月26号7:30:00
ELSE convert(varchar(100),GETDATE(),23)
end
)
and convert(varchar(100),GETDATE(),23)
目前正在研究怎么写
13352013513(提问者) 回复 张洪威大致看明白了 不过要实现还是不懂,我大概理解的是语句获取了年月 然后通过报表标题公式UNIQUEARRAY(ds1.select(\"年月\"))对数据源进行轮播查询,但实际要把 ( case when DAY(convert(varchar(100),GETDATE(),23))< 26 then convert(nvarchar(30),convert(nvarchar(8),dateadd(month,-1,convert(varchar(100),GETDATE(),23)),120)+\\\'26\\\',120) --如果条件abc日期(天)取值小于等于26则将日期变换为上个月26号7:30:00 when DAY(convert(varchar(100),GETDATE(),23)) > 26 then convert(nvarchar(30),convert(nvarchar(8),convert(varchar(100),GETDATE(),23),120)+\\\'26\\\',120) --如果条件abc日期(天)取值大于26号则将日期变换为本月26号7:30:00 ELSE convert(varchar(100),GETDATE(),23) end ) and convert(varchar(100),GETDATE(),23)这一块用$帆软中的函数替代 我还不知道如何去解决