如何解决损益的 T-SQL 动态数据透视查询
我的任务是进行动态查询以从 SAP 获取损益数据,但我不精通动态查询,如果有人可以提供帮助,不胜感激,要求如下:
-查询运行时将忽略当前运行的月份,但需要带上过去 24 个月的数据
-每个时期的列是“分类”,“帐户名称”和日期列(按顺序),日期列的格式应为(yyyy-mm-dd),日期列应自动添加,还有日期列虽然包含该月的所有数字,但每个月只有一个日期(第一天字符串)
-这是一份损益报告,所以数字应该是每个月(从至今)
您可以在下面看到一些数据以及我已经启动的非动态查询,您可以使用。
测试数据:
CREATE TABLE JDT1 (
RefDate date,Account nvarchar(50),SYSDeb int,SYSCred int
);
INSERT INTO JDT1 (RefDate, Account, SYSDeb,SYSCred)
VALUES ('2020-12-30', 'A2000', 45000,-1000),('2021-01-31', 'A2010', 90000,-20000),('2021-02-26', 'A2100', 34000,-3000);
CREATE TABLE OACT (
FatherNum nvarchar(50),AcctCode nvarchar(50),"AcctName" nvarchar(50),"GroupMask" int
);
INSERT INTO OACT (FatherNum, AcctCode, "AcctName","GroupMask")
VALUES ('A20', 'Debtors Control',1),('A10', 'Debtors Control - JDS',('A30', 'Provision for Sales Invoices/Credits',1);
我编写的非动态查询:
DECLARE
@to_date DATETIME
SET @to_date = (select eomonth(getdate(),+1))
select "Classification","Account Name",[2020-12-31],[2021-01-31]
from
(
SELECT
'Turnover' as "Group Mask",case when left(t0.FatherNum,1) = 'R' then 'REV'
else 'Other' end as "Classification",eomonth(t1.RefDate) as "Date",t0."AcctName" "Account Name",SUM(t1.SYSDeb - t1.SYSCred)*-1 as Balance
FROM OACT t0 -- G/L Accounts
inner join JDT1 t1 ON T0."AcctCode" = T1."Account"
where t0."GroupMask" = 4
and t1.RefDate < @to_date
group by
t0."AcctCode",t0."AcctName",t1.RefDate,t0.FatherNum
) t
pivot(
sum(Balance)
for "Date" in ([2020-12-31],[2021-01-31]))
as pivot_table
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。