查找一行中存在值的所有行
Find all lines where a value exists in one line
这是我的查询
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
我需要做的是 return 所有带有 pkg_no = 1597
的行。因为存在一个零区域。
我尝试了几个不同的 'where exists' 行,但没有用。
尝试自行加入。
通过这种方式,您可以将您的要求放在第二个 table "instance" 中,但根据另一个公共字段从 table 匹配项中检索所有内容。
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
如果我正确理解了这个问题,你需要这样的东西
开始
declare @str varchar(max);
set @str='';
SELECT @str=@str+ [YOURCOLUMB]
FROM [YOURTABLE]
SELECT @str
END
一种方法是在左联接中自引用 table,并且仅在联接子句中包含具有 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
接受的答案很好,但我看到你注意到你试过 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)
这是我的查询
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
我需要做的是 return 所有带有 pkg_no = 1597
的行。因为存在一个零区域。
我尝试了几个不同的 'where exists' 行,但没有用。
尝试自行加入。 通过这种方式,您可以将您的要求放在第二个 table "instance" 中,但根据另一个公共字段从 table 匹配项中检索所有内容。
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
如果我正确理解了这个问题,你需要这样的东西 开始
declare @str varchar(max);
set @str='';
SELECT @str=@str+ [YOURCOLUMB]
FROM [YOURTABLE]
SELECT @str
END
一种方法是在左联接中自引用 table,并且仅在联接子句中包含具有 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
接受的答案很好,但我看到你注意到你试过 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)