Sql server 拆分日期列,并根据结果计算金额
在sales表中,我有一列包含每个销售的完整日期,我需要将其拆分,并在sales表中添加两个独立的月份和年份列,以及一个包含每个月所有销售总额的列 这是我的桌子- 销售表 客户识别码 日期 量 123 01/01/2020 6. 124 01/02/2020 7. 123 01/03/2021 5. 123 15/01/2020 4.Sql server 拆分日期列,并根据结果计算金额,sql-server,Sql Server,在sales表中,我有一列包含每个销售的完整日期,我需要将其拆分,并在sales表中添加两个独立的月份和年份列,以及一个包含每个月所有销售总额的列 这是我的桌子- 销售表 客户识别码 日期 量 123 01/01/2020 6. 124 01/02/2020 7. 123 01/03/2021 5. 123 15/01/2020 4. 这里的一个问题是,计算列的结果与存储的数据不兼容。 例如,您不能为1月份的每一行构建1月份所有行的数量总和。您需要按日期分组并汇总数量 因此,我认为这可能是索引视
这里的一个问题是,计算列的结果与存储的数据不兼容。 例如,您不能为1月份的每一行构建1月份所有行的数量总和。您需要按日期分组并汇总数量 因此,我认为这可能是索引视图的理想候选。这将允许您存储计算数据,同时将数据保留在原始表中
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;
创建一个视图。顺便说一句,这是MS SQL Server还是?在提问时,您需要提供一个最小的可重复示例。请参考以下链接:请提供以下内容:(1)DDL和示例数据填充,即创建表和插入T-SQL语句。(2) 您需要做什么,即逻辑和代码尝试在T-SQL中实现它。(3) 所需输出,基于上述#1中的样本数据。(4) 您的SQL Server版本(选择@@version;)在SQL Server中。是否确实需要更改表结构?还是只需要一个按月/年返回销售总额的查询?多亏了你,我理解了这个想法。谢谢Wight Reynoldson,在每次跑步结束时,最后一张桌子的名字是什么?(或者,您在哪里定义了最终的表名)?因此名称可以是您喜欢的任何名称,通常对于视图,您将“vw”作为前缀。因此,在发送过来的示例中,我只是将索引视图称为vwSalesTable。