2013-01-02 13 views
5

Bazı SQL Server 2008R2 sorguları Postgresql 9.0'a geçiriyorum ve bununla ilgili bir sorunum var. Bunun bir virgülle ayrılmış listesini oluşturur anlıyoruz'stuff' ve 'for' ('') 'SQL Server'da Postgresql için

stuff((select ', '+p.[NAME] as 'data()' 
from BPROVIDERS_PROVIDER p, BORDER_ARTICLEORDERPROVIDER aop 
where p.OID = aop.PROVIDER for xml path('')),1,1,'')) as pNAMES 

Okuma SQL Server belgeleri: Burada SQL Server sorgu var. stuff işlevini Postresql'de overlay işlevine değiştirebileceğimi düşünüyorum. Doğrumuyum?

İkinci sorun, SQL Server'ın for xml path ('') ile parametre olarak gelir. Satır öğeleri oluşturmak yerine pNAMES adı verilen bir özelliğe atanan değerleri döndürür. Bu doğru mu? öznitelik tableforest = 'true' ile

mu Postgresql Query_to_xml() işlevi aynı şeyi?

Teşekkür ederiz.

cevap

19

Bunun yerine string_agg'u kullanabilirsiniz.

SQL Fiddle

PostgreSQL 9.1.6 Şema Kurulum:

create table T 
(
    Name varchar(10) 
); 

insert into T values('Kalle'); 
insert into T values('Pelle'); 
insert into T values('Urban'); 

Sorgu 1:

select string_agg(Name, ',') as Names 
from T 

Results:

|    NAMES | 
--------------------- 
| Kalle,Pelle,Urban | 
+0

Cevabınız için teşekkürler, 'xml yolu' ve 'query_to_xml' hakkında? – user1891262

+2

@ user1891262 - Sahip olduğunuz sorgu için buna ihtiyacınız yok. PostgreSQL'de string_agg, SQL Server'da sizin için xml yolunun ne yaptığını yapar. –