-
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
在线等...
我需要根据报表查询条件中的 两个日期(开始日期,结束日期) ,来计算去年同期的库存金额,请问我可以这样用宏表达式吗?
报表工具中,可以使用这样的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
在线等...
最佳答案
wyqmd 发表于 2019-1-23 15:51
我也想用主题表请问 主题集的属性没有与数据工厂那边绑定.
我创建主题表的时候,怎么才能引用到那边的 ...
首先新建数据库连接池,连接到数据工厂的库
然后新建主题集,主题集选择第一步中建的连接池,就可以分析数据工厂中的数据了
12个回答
您使用sql数据源做表么,如果报表需求不复杂的话,建议用主题表做表,比较简单、易操作另外您用的是什么数据库啊?
缱绻 发表于 2019-1-23 15:33
您使用sql数据源做表么,如果报表需求不复杂的话,建议用主题表做表,比较简单、易操作另外您用的是什么数 ...
我也想用主题表请问 主题集的属性没有与数据工厂那边绑定.
我创建主题表的时候,怎么才能引用到那边的表呢.(不能改主题集的属性,已经有很多的报表了)
wyqmd 发表于 2019-1-23 15:51
我也想用主题表请问 主题集的属性没有与数据工厂那边绑定.
我创建主题表的时候,怎么才能引用到那边的 ...
首先新建数据库连接池,连接到数据工厂的库
然后新建主题集,主题集选择第一步中建的连接池,就可以分析数据工厂中的数据了
缱绻 发表于 2019-1-23 15:59
首先新建数据库连接池,连接到数据工厂的库
然后新建主题集,主题集选择第一步中建的连接池,就可以分析 ...
谢谢,好了我可以创建主题表了.....我还是想知道——我SQL那里,那样用宏表达式,正确吗?
wyqmd 发表于 2019-1-23 16:12
谢谢,好了我可以创建主题表了.....我还是想知道——我SQL那里,那样用宏表达式,正确吗? ...
我看您没有写宏表达式呀,宏是类似这样的格式<#=@bbq#>
可参考这两个帖子中的写法
http://bbs.esensoft.com/thread-128857-1-1.html
http://bbs.esensoft.com/thread-129289-1-1.html
缱绻 发表于 2019-1-23 16:25
我看您没有写宏表达式呀,宏是类似这样的格式
可参考这两个帖子中的写法
http://bbs.esensoft.com/threa ...
在最前面 SQL定义定义变量 那块