Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить отрицательное значение, используя сложный запрос в Sql / 12 сообщений из 12, страница 1 из 1
15.06.2018, 15:41
    #39661346
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
Подскажите, пожалуйста
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
...
Рейтинг: 0 / 0
15.06.2018, 15:46
    #39661352
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
пятничный выстрел в голову
возвращены только целые числа, превышающие нулевые отрицательные значения, и отрицательные значения должны быть удалены только для категории
...
Рейтинг: 0 / 0
15.06.2018, 15:48
    #39661354
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
where [IsPromo] = 1 and [SaleCount]>0
если делаю так, все равно возвращаются отрицательные значения
...
Рейтинг: 0 / 0
15.06.2018, 15:50
    #39661356
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
В чем выстрел то
запрос возвращает те страты, где по категории ispromo=1 , больше 5 единиц
но возвращаются отрицательные значения
их надо убрать.
...
Рейтинг: 0 / 0
15.06.2018, 15:54
    #39661361
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
Kontoxwhere [IsPromo] = 1 and [SaleCount]>0
если делаю так, все равно возвращаются отрицательные значенияПотому что выборка данных ведется из
Код: sql
1.
SELECT t.*

Ставь условие не в подзапросе. Хотя от выстрела это не спасет
...
Рейтинг: 0 / 0
15.06.2018, 15:58
    #39661364
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
это как не из под запроса?
...
Рейтинг: 0 / 0
15.06.2018, 16:05
    #39661370
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
Kontoxэто как не из под запроса?Чтобы ответить на этот вопрос надо знать чего ты хочешь
Kontoxдругими словами, должны быть возвращены только целые числаЭто про какое поле?
Kontoxпревышающие нулевые отрицательные значения isnull(field_name) > 0?
Kontoxотрицательные значения должны быть удалены только для категории 1 по ISpromoВ приведенных исходных данных нет записей с ISpromo = 1 то есть все верно?
...
Рейтинг: 0 / 0
15.06.2018, 16:21
    #39661380
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
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 то есть все верно?
верно
...
Рейтинг: 0 / 0
15.06.2018, 16:31
    #39661387
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
Соединял без нужного условия
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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 
...
Рейтинг: 0 / 0
15.06.2018, 17:55
    #39661420
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
шК0ДЕР, все ок, дружище.
Слушай а как сделать запрос обратный этому?
т.е. вывести ТОЛЬКО те страты для категории 1 ispromo
где больше 5 наблюдений по salescount но среди них есть, которые меньше или равны нулю .
а те страты где только целые значения по salescount
выводить не надо.
т.е. будет так
salescount ispromo
0 1
10 1
-20 1
345 1
43623 1
0 1

так как такие данные тоже я буду анализировать отдельно
...
Рейтинг: 0 / 0
18.06.2018, 08:13
    #39661790
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
KontoxСлушай а как сделать запрос обратный этому?
т.е. вывести ТОЛЬКО те страты для категории 1 ispromo
где больше 5 наблюдений по salescount но среди них есть, которые меньше или равны нулю .
а те страты где только целые значения по salescount выводить не надо.Проанализируй запрос, подумай. Замени предикаты на соответствующие твоим требованиям. Почему я должен делать за тебя работу не получая при этом денег? :)
...
Рейтинг: 0 / 0
19.06.2018, 18:21
    #39662626
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить отрицательное значение, используя сложный запрос в Sql
я уже сделал:) Все ок:)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить отрицательное значение, используя сложный запрос в Sql / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]