MS SQL - Найти все строки, где значение существует в одной строке - PullRequest
0 голосов
/ 14 февраля 2020

Вот мой запрос

        select order_no, pkg_no, zone_no
        from T_DETAIL_ITEM a 
        where order_no = 495
        order by order_no, pkg_no

Для данного пакета у меня есть zone number = 0

enter image description here

Что мне нужно do возвращает все строки с pkg_no = 1597. Потому что тот, где существует с нулевой зоной.

Я пробовал несколько разных строк «где есть», и они не работают.

Ответы [ 4 ]

2 голосов
/ 14 февраля 2020

Принято, что ответ хороший, но я видел, что вы заметили, что пробовали EXISTS, поэтому я написал этот пример, используя этот метод.

SELECT *
FROM T_Detail_Item  d
WHERE exists (SELECT * FROM T_Detail_Item  dx WHERE dx.pkg_no = d.pkg_no AND dx.zone_no = 0)
2 голосов
/ 14 февраля 2020

Попробуйте самостоятельно присоединиться. Таким образом, вы можете поместить свое требование во «таблицу» второй таблицы, но получить все совпадения из этой таблицы на основе другого общего поля.

select distinct a.order_no, a.pkg_no, a.zone_no
        from T_DETAIL_ITEM a 
        join T_DETAIL_ITEM b on b.pkg_no = a.pkg_no
        where b.zone_no = 0
        order by a.order_no, a.pkg_no
1 голос
/ 14 февраля 2020

Один из способов - самостоятельно ссылаться на таблицу в левом соединении и включать только те, у которых zone_no = 0, в предложение соединения. Отфильтруйте несоответствующие записи, исключив из левого соединения записи, которые не совпадают, T2.pkg_no = NULL.

SELECT
    T1.pkg_no, T1.zone_no
FROM
    T_DETAIL_ITEM  T1
    LEFT OUTER JOIN T_DETAIL_ITEM T2 ON T2.pkg_no = T1.pkg_no AND T2.zone_no = 0
WHERE
    NOT T2.pkg_no IS NULL   
0 голосов
/ 14 февраля 2020

Если я правильно понял вопрос, нужно что-то вроде этого НАЧАТЬ

declare @str varchar(max);

set @str='';

SELECT  @str=@str+ [YOURCOLUMB]

  FROM [YOURTABLE]

SELECT @str

END
...