powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать первое подходящее значение
5 сообщений из 5, страница 1 из 1
Выбрать первое подходящее значение
    #39960119
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Есть запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 select distinct marm.[MATNR: (PK) Material Number] as Materal_number, 
 marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] UOM
from LIB_F6P_RTP.bv.[MARM: Units of Measure for Material] marm
where  [MANDT: (PK) Client] ='430'
and marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] IN ('B2', 'P2', 'B1', 'P1')
and marm.[MATNR: (PK) Material Number] in   ('000000000081697825', '000000000081697872', '000000000081697875', '000000000081697878',
'000000000081697944', '000000000081697946','000000000081698004', '000000000081698005', '000000000081718189', '000000000081718190', 
'000000000081718191', '000000000081718192')


возвращает значения
Materal_number UOM000000000081697825 B1000000000081697872 B2000000000081697875 B2000000000081697878 B2000000000081697944 B1000000000081697944 P2000000000081697946 B1000000000081698004 B2000000000081698005 B2000000000081718192 B2
Как завернуть так, что бы найти первое подходящее совпадение по условию ('B2', 'P2', 'B1', 'P1') именно в таком порядке, и все остальные не показыавать, в данном примере строка 000000000081697944 отображаеется 2 раза с B1 и P2(P2 в данном случе "лишнее".
Eсть ли какое решение?
пробовал мудрить с Select Case - не не оно.

P.S. доступ только на select, различные create, drop etc - увы запрещены.
P.P.S. Server 2016.
...
Рейтинг: 0 / 0
Выбрать первое подходящее значение
    #39960121
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
Как завернуть так, что бы найти первое подходящее совпадение по условию ('B2', 'P2', 'B1', 'P1') именно в таком порядке, и все остальные не показыавать, в данном примере строка 000000000081697944 отображаеется 2 раза с B1 и P2(P2 в данном случе "лишнее".
Непонятно, как связан указанный вами порядок с результатом.

Если порядок 'B2', 'P2', 'B1', 'P1', то B1 лишнее, а не P2.

Или переформулируйте условия.
...
Рейтинг: 0 / 0
Выбрать первое подходящее значение
    #39960122
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
kvitnitskiy
Как завернуть так, что бы найти первое подходящее совпадение по условию ('B2', 'P2', 'B1', 'P1') именно в таком порядке, и все остальные не показыавать, в данном примере строка 000000000081697944 отображаеется 2 раза с B1 и P2(P2 в данном случе "лишнее".
Непонятно, как связан указанный вами порядок с результатом.

Если порядок 'B2', 'P2', 'B1', 'P1', то B1 лишнее, а не P2.

Или переформулируйте условия.


Все верно, Вы правы, я ошибся. От старшего к меньшему в атком порядке - 'B2'>'P2'>'B1'>'P1'
...
Рейтинг: 0 / 0
Выбрать первое подходящее значение
    #39960125
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy
Все верно, Вы правы, я ошибся. От старшего к меньшему в атком порядке - 'B2'>'P2'>'B1'>'P1'
Тогда:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select Materal_number, UOM
from (
	select distinct 
		marm.[MATNR: (PK) Material Number] as Materal_number, 
		marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] UOM,
		ROW_NUMBER() OVER(partition by marm.[MATNR: (PK) Material Number] order by 
			case 
				when  marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] = 'B2' then 1
				when  marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] = 'P2' then 2
				when  marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] = 'B1' then 3
				when  marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] = 'P1' then 4
			end
		) as Ord
	from LIB_F6P_RTP.bv.[MARM: Units of Measure for Material] marm
	where  [MANDT: (PK) Client] ='430'
		and marm.[MEINH: (PK) Alternative Unit of Measure for Stockkeeping Unit] IN ('B2', 'P2', 'B1', 'P1')
		and marm.[MATNR: (PK) Material Number] in   ('000000000081697825', '000000000081697872', '000000000081697875', '000000000081697878',
			'000000000081697944', '000000000081697946','000000000081698004', '000000000081698005', '000000000081718189', '000000000081718190', 
			'000000000081718191', '000000000081718192')
) as t
where Ord = 1
...
Рейтинг: 0 / 0
Выбрать первое подходящее значение
    #39960126
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,
Спасибо большое.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать первое подходящее значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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