关于 宏表达式的运用

10426
12

wyqmd 小试身手Lv3

发表于2019-1-23 15:31

悬赏1

已解决

楼主
各位老师好

我需要根据报表查询条件中的 两个日期(开始日期,结束日期) ,来计算去年同期的库存金额,请问我可以这样用宏表达式吗?
报表工具中,可以使用这样的SQL查询来当数据源吗?


/*计算 去年同期 的库存金额*/
/*报表传参 查询开始日期 结束日期*/
declare @d1 date,@d2 date
set @d1 = '<#=@p9116#>'
set @d2 = '<#=@p7775#>'

/*转换 去年同期日期*/
declare @d11 date,@d22 date
set @d11 = CAST(LEFT(@d1,4)-1 AS CHAR(4)) + '-' + SUBSTRING(CONVERT(varchar(100), @d1, 23),6,2) + '-' + CAST(RIGHT(@d1,2) AS CHAR(2))
set @d22 = CAST(LEFT(@d2,4)-1 AS CHAR(4)) + '-' + SUBSTRING(CONVERT(varchar(100), @d2, 23),6,2) + '-' + CAST(RIGHT(@d2,2) AS CHAR(2))


select t00.ItmsGrpNam,t00.MaterialBrand,
t11.去年同期_初期金额,
t22.本去年同期_期入库金额,
t22.去年同期_本期出库金额,
(t11.去年同期_初期金额+t22.去年同期_本期入库金额-t22.去年同期_本期出库金额) as '去年同期_期末金额'
FROM
(
select t0.ItmsGrpNam,t0.MaterialBrand,Count(*) as '行'
FROM DEFAULT_CKJXC1017 t0
Group By t0.ItmsGrpNam,t0.MaterialBrand Having Count(*) > 1
) t00
left join
(
select t1.ItmsGrpNam, t1.MaterialBrand,(sum(t1.BQR_Amount) - sum(t1.BQC_Amount)) as '去年同期_初期金额' FROM DEFAULT_CKJXC1017 t1
where t1.DocDate < @d11
Group By t1.ItmsGrpNam, t1.MaterialBrand
) t11 on t11.ItmsGrpNam = t00.ItmsGrpNam AND t11.MaterialBrand = t00.MaterialBrand
left join
(
select t2.ItmsGrpNam, t2.MaterialBrand,
SUM(t2.BQR_Amount) AS '去年同期_本期入库金额',
SUM(t2.BQC_Amount) AS '去年同期_本期出库金额'
FROM DEFAULT_CKJXC1017 t2
WHERE t2.DocDate >= @d11 and t2.DocDate <= @d22
Group By t2.ItmsGrpNam, t2.MaterialBrand
) t22 on t22.ItmsGrpNam = t00.ItmsGrpNam AND t22.MaterialBrand = t00.MaterialBrand


在线等...

最近看过此主题的会员

qwz

Ly_LJY

wxw

xy6228476

chenzyd

莱卡

txl

116685222580

mkhang

13353517162

zuiwodongpo

v笑向前走

zhaomc

张大猫

徐实力

12个回答

只看楼主

wyqmd 小试身手Lv3

发表于2019-1-23 17:36

只看该作者

取消 关注该作者的回复

12#

缱绻 发表于 2019-1-23 16:25
我看您没有写宏表达式呀,宏是类似这样的格式
可参考这两个帖子中的写法
http://bbs.esensoft.com/threa ...

在最前面 SQL定义定义变量 那块

缱绻 数据领袖Lv6

发表于2019-1-23 17:42

只看该作者

取消 关注该作者的回复

13#

wyqmd 发表于 2019-1-23 17:36
在最前面 SQL定义定义变量 那块

@d1  @d2也是参数把,那这个也要写成宏表达式哦的形式哦

上一页12下一页共2页

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号