损益的 T-SQL 动态数据透视查询

如何解决损益的 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?