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

Откуда:
Сообщений: 146
Подскажите, пожалуйста
SELECT t.*
FROM (SELECT CustomerName,
[ItemRelation],
[DocumentNum],
[DocumentYear],
CustomerType
FROM [Action].[dbo].[promo_data]
WHERE [IsPromo] = 1
GROUP BY CustomerName,
[ItemRelation],
[DocumentNum],
[DocumentYear],
CustomerType
HAVING Count(*) >= 5) AS x
LEFT OUTER JOIN [Action].[dbo].[promo_data] AS t
ON x.ItemRelation = t.[ItemRelation]
AND x.[DocumentNum] = t.[DocumentNum]
AND x.[DocumentYear] = t.[DocumentYear]
AND x.[CustomerName] = t.[CustomerName]
AND x.[CustomerType] = t.[CustomerType]

Как мне исправить запрос, чтобы он не возвращал строки, где есть отрицательные значения в поле [SaleCount]?
простой пример

Dt ItemRelation SaleCount DocumentNum DocumentYear IsPromo
2017-11-10 00:00:00.000 11271 2 222 2017 0
2017-11-11 00:00:00.000 11271 -1 222 2017 0
2017-11-12 00:00:00.000 11271 0 222 2017 0
2017-11-13 00:00:00.000 11271 4 222 2017 0
2017-11-14 00:00:00.000 11271 -2 222 2017 0
2017-11-15 00:00:00.000 11271 4 222 2017 0
2017-11-16 00:00:00.000 11271 -5 222 2017 0
2017-11-17 00:00:00.000 11271 3 222 2017 0
2017-11-18 00:00:00.000 11271 0 222 2017 0
2017-11-19 00:00:00.000 11271 0 222 2017 0
2017-11-20 00:00:00.000 11271 4 222 2017 0
2017-11-21 00:00:00.000 11271 -3 222 2017 0
2017-11-22 00:00:00.000 11271 9 222 2017 0
2017-11-23 00:00:00.000 11271 0 222 2017 0

другими словами, должны быть возвращены только целые числа, превышающие нулевые отрицательные значения, и отрицательные значения должны быть удалены только для категории 1 по ISpromo
15 июн 18, 15:41    [21494189]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
пятничный выстрел в голову
возвращены только целые числа, превышающие нулевые отрицательные значения, и отрицательные значения должны быть удалены только для категории
15 июн 18, 15:46    [21494216]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

Откуда:
Сообщений: 146
where [IsPromo] = 1 and [SaleCount]>0
если делаю так, все равно возвращаются отрицательные значения
15 июн 18, 15:48    [21494224]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

Откуда:
Сообщений: 146
В чем выстрел то
запрос возвращает те страты, где по категории ispromo=1 , больше 5 единиц
но возвращаются отрицательные значения
их надо убрать.
15 июн 18, 15:50    [21494231]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
Kontox
where [IsPromo] = 1 and [SaleCount]>0
если делаю так, все равно возвращаются отрицательные значения
Потому что выборка данных ведется из
SELECT t.*
Ставь условие не в подзапросе. Хотя от выстрела это не спасет
15 июн 18, 15:54    [21494251]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

Откуда:
Сообщений: 146
это как не из под запроса?
15 июн 18, 15:58    [21494259]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
Kontox
это как не из под запроса?
Чтобы ответить на этот вопрос надо знать чего ты хочешь
Kontox
другими словами, должны быть возвращены только целые числа
Это про какое поле?
Kontox
превышающие нулевые отрицательные значения
isnull(field_name) > 0?
Kontox
отрицательные значения должны быть удалены только для категории 1 по ISpromo
В приведенных исходных данных нет записей с ISpromo = 1 то есть все верно?
15 июн 18, 16:05    [21494286]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

Откуда:
Сообщений: 146
Kontox
это как не из под запроса?
Чтобы ответить на этот вопрос надо знать чего ты хочешь
Kontox
другими словами, должны быть возвращены только целые числа
Это про какое поле?
Kontox
превышающие нулевые отрицательные значения
isnull(field_name) > 0?
Kontox
отрицательные значения должны быть удалены только для категории 1 по ISpromo
В приведенных исходных данных нет записей с ISpromo = 1 то есть все верно?

постараюсь объяснить
есть страта
рога-и-копыта+11111+345+2018 и есть акция ispromo(1-есть акция и 0-нет акации)
нужно чтобы возращались те страты, где по категории 1 есть более 5 наблюдений по salecount

поле salecount
но нужно возвращать те наблюдение где в страте только положительные значения salecount по единицам по ispromo

В приведенных исходных данных нет записей с ISpromo = 1 то есть все верно?
верно
15 июн 18, 16:21    [21494365]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
Соединял без нужного условия
SELECT t.*
  FROM (SELECT CustomerName,
               [ItemRelation],
               [DocumentNum],
               [DocumentYear],
               CustomerType
          FROM [Action].[dbo].[promo_data]
         WHERE [IsPromo] = 1 
           AND [SaleCount] > 0 
         GROUP BY CustomerName,
                  [ItemRelation],
                  [DocumentNum],
                  [DocumentYear],
                  CustomerType
        HAVING Count(*) >= 5) AS x
  LEFT OUTER JOIN [Action].[dbo].[promo_data] AS t
    ON x.ItemRelation = t.[ItemRelation]
   AND x.[DocumentNum] = t.[DocumentNum]
   AND x.[DocumentYear] = t.[DocumentYear]
   AND x.[CustomerName] = t.[CustomerName]
   AND x.[CustomerType] = t.[CustomerType]
   AND t.[SaleCount] > 0 
15 июн 18, 16:31    [21494402]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

Откуда:
Сообщений: 146
шК0ДЕР, все ок, дружище.
Слушай а как сделать запрос обратный этому?
т.е. вывести ТОЛЬКО те страты для категории 1 ispromo
где больше 5 наблюдений по salescount но среди них есть, которые меньше или равны нулю .
а те страты где только целые значения по salescount
выводить не надо.
т.е. будет так
salescount ispromo
0 1
10 1
-20 1
345 1
43623 1
0 1

так как такие данные тоже я буду анализировать отдельно
15 июн 18, 17:55    [21494738]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1205
Kontox
Слушай а как сделать запрос обратный этому?
т.е. вывести ТОЛЬКО те страты для категории 1 ispromo
где больше 5 наблюдений по salescount но среди них есть, которые меньше или равны нулю .
а те страты где только целые значения по salescount выводить не надо.
Проанализируй запрос, подумай. Замени предикаты на соответствующие твоим требованиям. Почему я должен делать за тебя работу не получая при этом денег? :)
18 июн 18, 08:13    [21498599]     Ответить | Цитировать Сообщить модератору
 Re: удалить отрицательное значение, используя сложный запрос в Sql  [new]
Kontox
Member

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