【发布时间】:2021-05-25 16:25:39
【问题描述】:
我的任务是构建资产负债表报告,我在下面构建了数据透视查询,但我发现了一些挑战:
1 - 报告应基于可变日期运行,这意味着例如列 [2021-01-31] 应将所有历史数据带到 2021 年 1 月 31 日,以下列 [2021-02-28 ] 应该将所有历史数据带到 2021 年 2 月 28 日,目前我只能填充第二列
2 - 日期列应该是动态的,因此如果在 3 月,列 [2021-03-31] 将被自动添加
有什么方法可以实现我的要求吗?
热烈的问候, 丹尼尔
DECLARE
@to_date DATETIME
SET @to_date = (select eomonth( getdate()))
select "Classification","Account Name",[2021-01-31],[2021-02-28]
from
(
select
'Assets' as "Group Mask"
,case when t0.FatherNum = 'A20' then 'AR'
when t0.FatherNum in ('A40','A50') then 'OCA'
when t0.FatherNum = 'A90' then 'FA'
when t0.FatherNum = 'A10' then 'CASH'
else 'Other' end as "Classification"
,@to_date as "Date"
,t0."AcctName" "Account Name"
,case when t1.RefDate <= @to_date then SUM(t1."Debit") - sum(t1."Credit") end as Balance
FROM OACT t0 -- G/L Accounts
inner join JDT1 t1 ON T0."AcctCode" = T1."Account"
where t0."GroupMask" = 1
group by
t0."AcctName"
,t0.FatherNum
,t1.RefDate
,t1."Account"
) as t
pivot(
sum(Balance)
for "Date" in ([2021-01-31],[2021-02-28]))
as pivot_table
【问题讨论】:
-
您总是提供单个日期作为@to_date。那么查询不是总是显示一个日期吗?
-
是的,看起来是这样,这就是我需要你们帮助的原因
-
你的数据库是sql server吗?
-
是的,SAP数据
-
只是为了澄清使用的是 T-SQL