【发布时间】:2021-01-05 12:09:18
【问题描述】:
我必须编写一个查询,对多列中的行计数求和
我的代码是这样的,但是总不行:
WITH
NextPreviousItemAndTotal
AS
(
SELECT LAG(Datetype, 1) OVER (PARTITION BY Fname ORDER BY Datetype ASC) AS PreviousItemDate,
LAG(Fcount,1) OVER(PARTITION BY Fname ORDER BY Datetype) AS PreviousItemCount,
CurrentItemDate, CurrentItemCount,
LEAD(Datetype, 1) OVER (PARTITION BY Fname ORDER BY Datetype ASC) AS NextItemDate,
LEAD(Fcount,1) OVER(PARTITION BY Fname ORDER BY Datetype) AS NextItemCount,
SUM(Fcount) OVER(PARTITION BY Fname ORDER BY Datetype ) AS Total
FROM FoodSara_tbl
)
SELECT PreviousItemDate, PreviousItemCount, CurrentItemDate, CurrentItemCount,CurrentItemCount,NextItemCount, Total
FROM NextPreviousItemAndTotal
输入:
|PreviousItemDate|PreviousItemCount|CurrentItemDate|CurrentItemCount|NextItemDate|NextItemCount|
|----------------|-----------------|---------------|----------------|------------|-------------|
| Null | Null | 2019/10/10 | 10 |2019/10/12 | 2 |
| 2019/10/10 | 10 |2019/10/12 | 2 |2020/01/20 | 12 |
| 2019/10/12 | 12 |2020/01/20 | 12 |Null | Null |
输出:
|PreviousItemDate|PreviousItemCount|CurrentItemDate|CurrentItemCount|NextItemDate|NextItemCount|Total|
|----------------|-----------------|---------------|----------------|------------|-------------|-----|
| Null | Null | 2019/10/10 | 10 |2019/10/12 | 2 |12 |
| 2019/10/10 | 10 |2019/10/12 | 2 |2020/01/20 | 12 |24 |
| 2019/10/12 | 12 |2020/01/20 | 8 |Null | Null |20 |
【问题讨论】:
-
您希望该值是多少?什么逻辑定义
total?您的查询还引用了许多不属于input的列,这有点令人困惑。 -
是的,你是对的,我编辑了
标签: sql sql-server select common-table-expression