Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在比较行和列时查找特定属性值_Sql_Oracle - Fatal编程技术网

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)