【问题标题】:SQL create column for every week (Loop?)SQL 每周创建列(循环?)
【发布时间】:2020-11-26 08:26:22
【问题描述】:

我需要报告每周的变化。 这是今天金额的代码

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 个表并运行一个简单的代码来生成每周报告吗?

谢谢

【问题讨论】:

  • 示例数据和预期结果将帮助我们在这里为您提供帮助,但是,我认为这里没有任何UNION 查询的理由;我怀疑你只需要聚合和GROUP BY 子句。

标签: sql sql-server loops join union


【解决方案1】:

使用示例可能更容易,但我不知道如何在此处粘贴表格..

也许是真的,我这里不需要 union,group by 就足够了,但对我来说仍然很难 :)

好的。假设表有这样的标题:Project | 国家 | 日期 | 金额

下面的代码返回今天日期的金额

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 个代码并将结果连接在一起,但我相信这是一个更好的方法。此外,我不想每周编辑此查询并为其添加新日期。

那么有什么想法可以让我的生活更轻松吗?

【讨论】:

    【解决方案2】:

    如果我正确理解了您的要求,您需要做的就是从日期中提取星期,例如

    Select 
    Project,
    datepart(week, date),
    SUM(amount)
    From Table
    Where Date < '2020.11.23'
    Group by Project, datepart(week, date)
    

    【讨论】:

      猜你喜欢
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2020-10-31
      相关资源
      最近更新 更多