powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на проверку строк
19 сообщений из 19, страница 1 из 1
Запрос на проверку строк
    #39581649
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет. Как пример, есть 2 строки.В них описывается одинаковый товар с 2 складов. Как сделать если в одном складе значение 0, то и во вторую строчку с другим названием склада добавилось бы значение 0.
На примере если в складе 'Pakavimo t' Poreikis='0' то в складе 'Pakavimo' нужен результат тоже Poreikis='0' или можно эти значения в другом столбике записать.

Пример прикреплён
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581660
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
UPDATE таблица 
SET количество = 0
WHERE товар IN ( SELECT DISTINCT товар
                 FROM таблица
                 WHERE количество = 0)
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581666
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (obj_kod nvarchar(50))

insert @t
(obj_kod)
select
	obj_kod 
from 
	dbo.View_SPP_poreikis_15
where
	Poreikis = 0

update t
set
	Poreikis = 0
from
	dbo.View_SPP_poreikis_15 t
	inner join @t t2 on t2.obj_kod = t.obj_kod
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581674
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А без Update можно ? Это уже Views . Может в нём можно что то сделать ? моя логика работает так, но не знаю как это написать правильно SQL серверу.

Case when data = data AND pre_kod = pre_kod AND expr1 = expr1 в складе san_kod='PAKAVIMO T' Poreikis='0' THEN в складе san_kod='PAKAVIMO' Poreikis='0'
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581678
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim ZЭто уже Views . Может в нём можно что то сделать ?как пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
	obj_kod,
	case when t2.flag = 1 then 0 else t.Poreikis end as Poreikis
from
	dbo.View_SPP_poreikis_15 t
	inner join
		(
		select
			obj_kod, 1 as flag
		from 
			dbo.View_SPP_poreikis_15
		where
			Poreikis = 0
		) t2 on t2.obj_kod = t.obj_kod
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581693
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо просто выбрать, а не обновить? Тогда, может, заработает такое вот:
Код: sql
1.
SELECT ... , CASE WHEN 0 = MIN(количество) OVER (PARTITION BY товар) THEN 0 ELSE количество END, ...
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581694
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всяком случае sqlfiddle говорит, что так можно.
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581728
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВо всяком случае sqlfiddle говорит, что так можно.
А скриншот от ТС говорит, что у него SQL Server 2000, и ему так нельзя.
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581742
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Minamotoскриншот от ТС говорит, что у него SQL Server 2000Ну слабоват я в скриншотах...
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581793
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS Server 2014
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581940
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaВам надо просто выбрать, а не обновить? Тогда, может, заработает такое вот:
Код: sql
1.
SELECT ... , CASE WHEN 0 = MIN(количество) OVER (PARTITION BY товар) THEN 0 ELSE количество END, ...



можно здесь поподробней, под мой вариант написать ?

WHEN 0 = MIN(количество) что здесь имеется ввиду за 0 ?
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581954
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может можно их как то объединить, оставить только ту, где Poreikis=0 ???
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581956
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Z,

дык full outer join + coalesce(sklad1, sklad2, 0).
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581958
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или я не понял задачу и в результат требуется добавить строки, не существующие на одном из складов?
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39581970
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Z,

главный вопрос... в этом вашем Poreikis могут быть значения меньше нуля?
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39582007
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дедушка,
Poreikis не может быть меньше нуля.
Poreikis=0 тогда, когда в складе PAKAVIMO T остаток больше чем Expr1. Если это выполняется, то остаток в складе PAKAVIMO не интересует и это строка может не показываться или присвоить ей тоже значение 0. И потом делать выборку всё кроме 0
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39582071
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Zможно здесь поподробней, под мой вариант написать ?Что - подробнее? большая проблема заменить имена полей на свои?

Vadim ZWHEN 0 = MIN(количество) что здесь имеется ввиду за 0 ?Ноль - это число такое... постоянное... константа типа. Небось WHEN x=0 не удивит? Так почему WHEN 0=x удивляет?
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39582093
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaVadim Zможно здесь поподробней, под мой вариант написать ?Что - подробнее? большая проблема заменить имена полей на свои?

Vadim ZWHEN 0 = MIN(количество) что здесь имеется ввиду за 0 ?Ноль - это число такое... постоянное... константа типа. Небось WHEN x=0 не удивит? Так почему WHEN 0=x удивляет?
data - дата
pre_kod - код товара
expr1 - нужное количество
likutis - остаток в складе
san_kod- склад
Poreikis - если в складе PAKAVIMO T количество больше или ровно нужному количеству то 0, иначе нужное количество.
pppp-если в в складе PAKAVIMO T POREIKIS=0 то pppp=0 и в складе PAKAVIMO тоже должно оказаться pppp=0

Выражение будет выглядеть так ?:

SELECT data, pre_kod, expr1, likutis, san_kod, poreikis, pppp , CASE WHEN 0 = MIN(expr1) OVER (PARTITION BY pre_kod) THEN 0 ELSE expr1 END as proba

так ?
...
Рейтинг: 0 / 0
Запрос на проверку строк
    #39582112
Vadim Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалённо попробовал, вроде результат нужный.
Спасибо. Завтра отпишусь всё ли получилось. Вот код который прошёл:

Код: sql
1.
2.
SELECT data, pre_kod, expr1, likutis,obj_kod, san_kod, poreikis, CASE WHEN 0 = MIN(poreikis) OVER (PARTITION BY pre_kod) THEN 0 ELSE poreikis END as proba   
FROM            dbo.View_SPP_poreikis_15
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос на проверку строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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