Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сортировать значения по категориям в SSMS  [new]
Kontox
Member

Откуда:
Сообщений: 146
Я пишу запрос

SELECT Dt, CustomerName, ItemRelation, SaleCount,
DocumentNum, DocumentYear, IsPromo, CustomerType
FROM [dbo].[promo_data] where [CustomerType]='XY'
есть данные о запасе [IsPromo] (0-нет запаса, 1 является запасом), как я могу выбрать только те наблюдения XY CustomerType, которые имеют только одно значение 1 для категории запаса = 1

простой пример

[ItemRelation] [SaleCount] IsPromo ,[DocumentNum] [DocumentYear]
11203 8,85947691 0 138 2018
11203 9,450108704 0 138 2018
11203 12,40326767 1 138 2018
11202 8,85947691 0 137 2018
11202 9,450108704 0 137 2018
11202 12,40326767 1 137 2018
11202 25,98779894 1 137 2018
11202 63,19760196 1 137 2018
Я должен выбрать
11203 1 138 2018


потому что
11202 137 2018
уже имеет 2 единицы


я делаю таким способом
SELECT ItemRelation, DocumentNum, DocumentYear, IsPromo
FROM [dbo].[promo_data]
WHERE CustomerType = 'XY' AND IsPromo = 1
GROUP BY ItemRelation, DocumentNum, DocumentYear, IsPromo
HAVING COUNT(*) = 1;

но мне нужно чтобы переменная [SaleCount] была также возвращена, чтобы я её не группировал,
пусть даже дублирование какое будет ,не важно.
Как это сделать?
пока её вернуть только подставив в группирующую конструкцию
Но мне так не нужно.
13 июн 18, 17:32    [21489135]     Ответить | Цитировать Сообщить модератору
 Re: Как сортировать значения по категориям в SSMS  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
так нужно?
SELECT ItemRelation, DocumentNum, DocumentYear, IsPromo, Max(SaleCount) as SaleCount 
FROM [dbo].[promo_data]
WHERE CustomerType = 'XY' AND IsPromo = 1
GROUP BY ItemRelation, DocumentNum, DocumentYear, IsPromo
HAVING COUNT(*) = 1
13 июн 18, 17:34    [21489142]     Ответить | Цитировать Сообщить модератору
 Re: Как сортировать значения по категориям в SSMS  [new]
Kontox
Member

Откуда:
Сообщений: 146
да, это подходит, а можно сделать так, чтобы нули ещё возвращались?
т.е. вот эти данные
[ItemRelation] [SaleCount] IsPromo ,[DocumentNum] [DocumentYear]
11203 8,85947691 0 138 2018
11203 9,450108704 0 138 2018
11203 12,40326767 1 138 2018
должны полностью вернуться.
не одна строчка, а три.
13 июн 18, 18:09    [21489228]     Ответить | Цитировать Сообщить модератору
 Re: Как сортировать значения по категориям в SSMS  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
SELECT ItemRelation, SaleCount, IsPromo, DocumentNum, DocumentYear
  FROM [dbo].[promo_data] p
 WHERE CustomerType = 'XY' 
   AND p.ItemRelation in (SELECT ItemRelation 
                            FROM [dbo].[promo_data]
			   WHERE CustomerType = 'XY' 
                             AND IsPromo = 1
			   GROUP BY ItemRelation, DocumentNum, DocumentYear, IsPromo
			  HAVING COUNT(*) = 1)
14 июн 18, 08:24    [21489963]     Ответить | Цитировать Сообщить модератору
 Re: Как сортировать значения по категориям в SSMS  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
ЗЫ. Алиасы расставь, а то забыл =/
14 июн 18, 08:27    [21489964]     Ответить | Цитировать Сообщить модератору
 Re: Как сортировать значения по категориям в SSMS  [new]
Kontox
Member

Откуда:
Сообщений: 146
Все, сработало.
14 июн 18, 19:49    [21492062]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить