DECLARE @Таблица table(
[Клиент] varchar(8),
[Код юр лица] varchar(12),
[Код ТТ] varchar(8),
[Код продукции] varchar(8),
[Дата] date,
[Отгрузки штук] integer
)
;
INSERT INTO
@Таблица
VALUES
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU1', '01.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU1', '02.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU1', '03.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU2', '01.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU2', '02.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ1','SKU2', '03.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU1', '01.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU1', '02.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU1', '03.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU2', '01.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU2', '02.01.2014', 100),
('Клиент1', 'Код юр лица1', 'Код ТТ2','SKU2', '03.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU1', '01.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU1', '02.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU1', '03.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU2', '01.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU2', '02.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ1','SKU2', '03.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU1', '01.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU1', '02.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU1', '03.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU2', '01.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU2', '02.01.2014', 100),
('Клиент2', 'Код юр лица2', 'Код ТТ2','SKU2', '03.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ1','SKU1', '01.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ1','SKU1', '02.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ1','SKU1', '03.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ2','SKU1', '01.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ2','SKU1', '02.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ2','SKU1', '03.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ3','SKU1', '01.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ3','SKU1', '02.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ3','SKU1', '03.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ4','SKU1', '01.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ4','SKU1', '02.01.2014', 100),
('Клиент3', 'Код юр лица3', 'Код ТТ4','SKU1', '03.01.2014', 100)
--Тип отбора ТТ
--1. Случайно отбирает ТТ по заданному проценту
--2. Случайно отбирает ТТ по заданному проценту, так чтобы для каждого клиента пропорционально отбирались ТТ.
--3. Случайно отбирает ТТ по заданному количеству
DECLARE @ТипОтбора INTEGER =3;
--Для типа отбора ТТ 1 и 2
DECLARE @ЗаданныйПроцентТТВыборка decimal(2,2) = 0.07;
DECLARE @РасcчитанноеКоличествоТТ INTEGER;
--Для типа отбора ТТ 3
DECLARE @ЗаданноеКоличествоТТВыборка integer = 2;
SET @РасcчитанноеКоличествоТТ = ROUND (@ЗаданныйПроцентТТВыборка * (SELECT count(*) FROM @Таблица),0);
SELECT
[Клиент],
[Код юр лица],
[Код ТТ],
[Код продукции],
[Дата],
[Отгрузки штук]
FROM
@Таблица
INNER JOIN
(CASE
WHEN @ТипОтбора= 1 THEN
WHEN @ТипОтбора= 2 THEN
WHEN @ТипОтбора= 3 THEN
(SELECT TOP 1
Таб1.[Код ТТ]
FROM
(SElECT DISTINCT [Код ТТ] FROM @Таблица) AS Таб1
ORDER BY
NEWID()) AS ФИЛЬТР_ТТ
END)
ON
@Таблица.[Код ТТ] = ФИЛЬТР_ТТ.[Код ТТ]
|