我需要做一份每周更改的报告。这是今天金额的代码
SELECT
[Entry No_],
[Customer No_],
[Posting Date],
[Description],
[Currency Code],
Trans_type = case when [Deposit]=1 then 'Deposit'
when [Imprest]=1 then 'Imprest'
else 'Other' end,
A.Amount
FROM Table1
LEFT JOIN
(
SELECT Distinct [Cust_ Ledger Entry No_],
SUM ([Amount EUR]) as 'amount'
FROM Table2
group by [Cust_ Ledger Entry No_]
having
SUM ([Amount EUR]) <> '0'
)A
on [Entry No_] = A.[Cust_ Ledger Entry No_]
Where
A.Amount is not NULL
生成上周数据的代码在这里(只添加where子句(:
SELECT
[Entry No_],
[Customer No_],
[Posting Date],
[Description],
[Currency Code],
Trans_type = case when [Deposit]=1 then 'Deposit'
when [Imprest]=1 then 'Imprest'
else 'Other' end,
A.Amount
FROM Table1
LEFT JOIN
(
SELECT Distinct [Cust_ Ledger Entry No_],
SUM ([Amount EUR]) as 'amount'
FROM Table2
where [posting Date] < '2020-11-23'
group by [Cust_ Ledger Entry No_]
having
SUM ([Amount EUR]) <> '0'
)A
on [Entry No_] = A.[Cust_ Ledger Entry No_]
Where
A.Amount is not NULL
将两个查询联合起来,然后导出到Excel并进行透视就足够了,但问题是我需要过去50周的结果。有没有什么聪明的方法可以避免联合50个表,并运行一个简单的代码来生成周报?
感谢
使用sample可能会更容易,但我不知道如何在这里粘贴表。。
也许这是真的,我在这里不需要工会,分组就足够了,但这对我来说仍然很困难:(
好的。假设表有这样的标题:项目|国家|日期||金额
下面的代码返回今天的金额
Select
Project,
SUM(amount)
From Table
Group by Project
我实际上需要今天的日期,以及前几周的结果(11月22日(第47周(、11月15日(第46周(等的结果是什么……从今天起总共50周(。
前一周金额的代码在这里:
Select
Project,
SUM(amount)
From Table
Where Date < '2020.11.23'
Group by Project
所以我的想法是创建50个代码并将结果连接在一起,但我相信这是一个更好的方法。此外,我不想每周编辑这个查询,并为它添加一个新的日期。
有什么想法,让我的生活更轻松吗?
如果我正确理解了你的要求,你所需要做的就是从日期中提取一周,例如
Select
Project,
datepart(week, date),
SUM(amount)
From Table
Where Date < '2020.11.23'
Group by Project, datepart(week, date)