Sql 如何在比较行和列时查找特定属性值
在这里,我想得到Sql 如何在比较行和列时查找特定属性值,sql,oracle,Sql,Oracle,在这里,我想得到no谁拥有相同的place1和place2 例如: no1总共有3个tot,其place1和place2相等,因为它是'Colombo'(比较列和行) 但是no2没有相同的place1和place2 如何通过查询检索这样的数据?您可以使用行号()来标识该旅程的终点位置(或它们是什么)。从起点到终点的顺序,反之亦然。端子的排号()为1。第一个订单的终端使用PLACE1,第二个订单使用PLACE2。然后将结果合并并比较端子。如果它们相等,您将获得一次往返,并且可以返回相应的否 no
no
谁拥有相同的place1
和place2
例如:
no
1总共有3个tot
,其place1
和place2
相等,因为它是'Colombo'
(比较列和行)
但是no
2没有相同的place1
和place2
如何通过查询检索这样的数据?您可以使用
行号()
来标识该旅程的终点位置(或它们是什么)。从起点到终点的顺序,反之亦然。端子的排号()为1。第一个订单的终端使用PLACE1
,第二个订单使用PLACE2
。然后将结果合并并比较端子。如果它们相等,您将获得一次往返,并且可以返回相应的否
no tot place1 place2
1 1 colombo negombo
1 2 negombo kandy
1 3 kandy colombo
2 1 colombo kandy
2 2 kandy jafna
2 3 jafna negombo
3 1 jafna kaduwela
3 2 kaduwela jafna
4 1 trico colombo
如果我理解正确,您希望
place1
中的列表与place2
中的列表匹配每个no
如果是这样,您可以使用listag()
:
特别是PL/SQL?不仅仅是一个查询?@WilliamRobertson我只想查询你能显示你期望的结果吗?我不完全明白…@WilliamRobertson no 1,3,colombo 3,2,jafna@WilliamRobertson我只想要科伦坡-科伦坡有3次旅行bt一次旅行号码,但在第二次旅行中,3次旅行bt一次旅行号码目的地不是==出发科伦坡到内贡博,但我想要检索相同的目的地和出发地以及总旅行次数
SELECT X.NO
FROM (SELECT NO,
PLACE1 PLACE,
ROW_NUMBER() OVER (PARTITION BY NO
ORDER BY TOTN ASC) RN
FROM ELBAT) X
INNER JOIN (SELECT NO,
PLACE2 PLACE,
ROW_NUMBER() OVER (PARTITION BY NO
ORDER BY TOTN DESC) RN
FROM ELBAT) Y
ON Y.NO = X.NO
WHERE X.RN = 1
AND Y.RN = 1
AND X.PLACE = Y.PLACE;
select no, listagg(place1, ',') within group (order by place1) as places
from t
group by no
having listagg(place1, ',') within group (order by place1) = listagg(place2, ',') within group (order by place2);
SELECT A.*
FROM A A
WHERE NOT EXISTS (SELECT 1
FROM B B
WHERE A.A = B.A)