В моей базе данных 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 возможных значения:" ДОСТАВКА "," RESTOCKING "," MISSING "," UNSOLD
Я создал скрипт sql, который дает мне сумму недостающего количества для выделенного pointOfSale, productCode, editionCode и даты выпуска.
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»
2 - добавьте еще один столбец для суммы «проданных» количеств с именем «Sold_qty», который рассчитывается по этой формуле => SOLD qty = DELIVERY Кол-во - НЕ УКАЗАН Кол-во - НЕ ПРОДАН Кол-во
Как мне изменить мой скрипт для создания этих двух новых столбцов?
Мне нужен примерно такой результат:
PS: не забывайте, что мое "где" состояние в этом сценарии учитываются только пропущенные количества (Where FeedbackType = 'MISSING') => чтобы делать то, что мне нужно сейчас, я полагаю, нам нужно изменить это условие «где» или, возможно, сделать другое условие «где» в другом месте.
Заранее благодарю за любую помощь!