2010-06-09 51 views
0

我想要的是一行, 雖然我試圖使用cast函數,但沒有太大的成功。誰能告訴我在Oracle我們確實有一定的功能,如stragg通過使用東西功能輸出一排

我得到以下結果我如何能做到這一點MS SQL服務器:

Tenancy No Property NO usercode name  Address person no lead tenant 
123 1234  12345 MR Rose Temp add 1   1 
123 1234  12345 MRS Rose Temp add 2   0 

,但我想是這樣的:

123 1234  12345 MR Rose ; MRS ROSE Temp add 1 ; 0 

這裏是我的代碼:

Select distinct(t."prhst-occ-num") as "TENANCY_REF",   
    per."pr-seq-no" as "PROPERTY-REF-NO" ,   
    pr."user-cde"  as "USER_CDE",   
    **/*CAST(SUBSTRING(stuff ((
    select distinct(',' + per."fnam") 
    From per per , 
       prhst prh, 
       aTNCY t 
    where prh."per-num"=per."num" 
    and t."prhst-occ-num"=prh."occ-num" 
    and prh."lead-tenant" in (0,1) 
    for XML Path('') 
    ), 1, 1, ''),1,500) as nvarchar(500)) as "FIRSTNAMES",*/** 

     per."fnam" + '-' + per."snam" as "FULL NAME", 
     pr."addr" + ' '+ pr."postcode"  as "FULL ADDRESS" , 
     prh."tenu-cde", 
    prh."per-num"     as "PERSON NUMBER", 
    prh."lead-tenant"  as "LEAD TENANT" , 
From  TNCY t, 
     PR  pr, 
     PRHST prh, 
     per per 
Where t."prhst-occ-num"=prh."occ-num" 
    and pr."seq-no"=prh."pr-seq-no" 
    and per."num"=prh."per-num" 
order by 1,2 

回答

0

所以,你想送將多行拆分爲一個文本列。 for xml子句可以做到這一點,但通常將其應用於子查詢。例如:

select TextColumn + ';' as [text()] 
from (
     select FirstName + ' ' + LastName as TextColumn 
     from Customers 
     ) sub 
for xml path('') 

如果你輸入其名稱表,該查詢打印一行:

Jeffrey Jones;Andrei Voronkov;George Boole;Kurt Gödel 

您可以與其他任何的查詢替換子查詢,例如:

select TextColumn + ';' as [text()] 
from (
     select t.[prhst-occ-num] + ' ' + per.fnam + '-' + 
        per.snam as TextColumn 
     from TNCY t, 
       PR  pr, 
       ..... 
     order by 
       t.[prhst-occ-num] 
     ) sub 
for xml path('') 
+0

您好, 我已經刪除了訂單,但得到以下錯誤 Msg 245,Level 16,State 1,Line 1 轉換varchar值';'時轉換失敗到數據類型int。 謝謝 – user362283 2010-06-09 12:26:30

+0

在將一個數字連接到一個字符串之前,使用'cast(col1 as varchar(25))'。例如,'cast(t。「prhst-occ-num」as varchar(10))+''+ per。「fnam」' – Andomar 2010-06-09 12:32:57