gpt4 book ai didi

sql-server - 拆分日期列,并根据结果计算金额

转载 作者:行者123 更新时间:2023-12-04 07:44:30 25 4
gpt4 key购买 nike

在销售表中,我有一列包含每个销售的完整日期,我需要拆分它并向销售表中添加 2 个单独的月份和年份列,以及一个包含每个月所有销售总和的列.
这是我的 table ——
销售表


顾客ID
日期
数量


123
01/01/2020
6

124
01/02/2020
7

123
01/03/2021
5

123
15/01/2020
4


这是我写的 -

ALTER TABLE SALES ADD SELECT DATEPART (year, date) as year FROM SALES;

ALTER TABLE SALES ADD SELECT DATEPART (month, date) as month FROM SALES;

ALTER TABLE SALES ADD SUM_Quantity AS SUM() (Here I was stuck in a query...)
这是一个有效的查询,以及如何正确编写它?谢谢!

最佳答案

您将在这里遇到的问题之一是您拥有的计算列的结果与存储的数据不兼容。
例如,您无法为 1 月的每一行构建 1 月所有行的数量总和。您需要按日期分组并汇总数量。
因此,我认为这可能是索引 View 的理想候选者。这将允许您存储计算出的数据,同时保留原始表中的数据。

create table SalesTable (customer_id int, date date, quantity smallint);

insert SalesTable (customer_id, date, quantity)
select 123, '2020-01-01', 6
union
select 124, '2020-02-01', 7
union
select 123, '2021-03-01', 5
union
select 123, '2020-01-15', 4;

select * from SalesTable order by date; /*original data set*/

GO

CREATE VIEW dbo.vwSalesTable /*indexed view*/
WITH SCHEMABINDING
AS
SELECT customer_id, DATEPART(year, date) as year, datepart(MONTH, date) as
month, SUM(quantity) as sum_quantity from dbo.SalesTable group by Customer_Id,
DATEPART(year, date), DATEPART(MONTH, date)
GO

select * from vwSalesTable /*data from your indexed view*/

drop view vwSalesTable;
drop table SalesTable;
Original data set on top and indexed view output below

关于sql-server - 拆分日期列,并根据结果计算金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67266521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com