Oracle 简单列表结果以逗号分隔列表带引号?

Oracle simple list results to comma separated list with quotes?

我想获得这个简单查询的结果

select PersonID from Persons where city ='Miami'

作为带引号的扁平逗号分隔列表。

期望的结果应该是 '3','5','7','8'

http://sqlfiddle.com/#!4/95e86d/1/0

我试过 list_add 但我得到:ORA-00904: "STRING_AGG": invalid identifier

CREATE TABLE Persons (
    PersonID NUMBER,
    FirstName varchar(255),
    City varchar(255)
);
    
    
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (1, 'Tom B.','Stavanger');
    
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (2, 'Jerry M.','Train City');
    
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (3, 'Eric g.','Miami');
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (4, 'Bar Y.','Manhattan');
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (5, 'John K.','Miami');
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (6, 'Foo F.','Washington');
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (7, 'Alen D.','Miami');
      
INSERT INTO Persons (PersonID, FirstName, City)
  VALUES (8, 'John K.','Miami');
select listagg( '''' || PersonID || '''', ',' ) 
         within group (order by personID) 
  from Persons 
 where city ='Miami'

应该可以。

我不得不质疑你为什么要产生这个特定的结果。如果您要生成此字符串以便随后可以在另一个动态生成的 SQL 语句的 IN 列表中使用它,您最好退后一步,因为有更好的方法解决问题的方法。

SQL Fiddle example