我的sql数据库中有一个具有这种结构的表
USE [XXXXX]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Sales](
[Id] [uniqueidentifier] NOT NULL,
[PoSId] [varchar](50) NOT NULL,
[EditorCode] [varchar](10) NOT NULL,
[ProductCode] [varchar](10) NOT NULL,
[EditionCode] [varchar](10) NOT NULL,
[IssueDate] [date] NOT NULL,
[FeedbackType] [varchar](50) NOT NULL,
[FeedbackRef] [varchar](50) NOT NULL,
[Quantity] [int] NOT NULL,
[CreationTime] [datetime] NOT NULL,
[ModificationTime] [datetime] NOT NULL,
CONSTRAINT [PK_Sales] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
FeedbackType“属性接受4个可能的值:” DELIVERY“,” RESTOCKING“,” MISSING“,” UNSOLD
我创建了一个sql脚本,该脚本为我提供了专用的PointOfSale,productCode,versionCode和发行日期的缺失数量之和。
SELECT [PoSId]
,[ProductCode]
,[EditionCode]
,[IssueDate]
, CASE WHEN Quantity < 0 THEN Quantity * -1 ELSE Quantity END AS QuantityMissing
FROM (
SELECT [PoSId]
,[ProductCode]
,[EditionCode]
,[IssueDate]
,SUM([Quantity]) AS Quantity
FROM [xxxxxxx].[dbo].[Sales]
Where FeedbackType='MISSING' and IssueDate < '2019-12-18'
AND CreationTime < '2019-12-19'
GROUP BY [PoSId]
,[ProductCode]
,[EditionCode]
,[IssueDate]
) T
ORDER by IssueDate
直到现在,脚本完成了我需要做的事情(添加了一个缺少数量的列)
现在,我需要修改此脚本才能执行此操作:
1-为名为“ Unsold_qty”的“ Unsold”数量的总和添加新列
2-为基于此公式计算的名为“ Sold_qty”的“已售出”数量总和添加另一列=>已售出数量=交付数量-缺失数量-未售出数量
如何修改脚本以创建这两个新列?
我需要的结果是这样的:
PS:别忘了我在脚本中的“ where”条件只考虑了缺少的数量(Where FeedbackType ='MISSING')=>要执行我现在需要的操作,我想我们需要更改此“ where”条件或也许在其他地方有条件的地方再做一个。
提前感谢您的帮助!
我在sql数据库中有一个具有这种结构的表USE [XXXXX] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]。[销售]([Id] [uniqueidentifier] ...] >
这称为条件聚合。
一种方法是将CASE
移动到SUM
内。