2014-12-04 112 views
0

我遇到問題,它將給出字符串結果的子查詢結果連接起來。返回多個值的MS SQL Server子查詢(字符串)

其實我的子查詢有一個CASE WHEN語句和列表函數在MS SQL服務器中不起作用。所以我需要以某種方式連接這個子查詢的結果,以便結果在一行中可見。

這裏是我的代碼如下所示:

select 
.......,(select CASE WHEN pm.PaymentType = 1 THEN 'Cash'  
        WHEN pm.PaymentType = 2 THEN 'Check'  
        WHEN pm.PaymentType = 3 THEN 'Credit Card' 
        ELSE 'Money Order' 
       END 
      from 
      <some tables with all the joins> 
      where 
      <all the conditions>) AS [PAYMENT TYPE], 
....... 
from 
<some more tables with joins> 
where 
<some other conditions> 

感謝您的幫助!

+0

不支持SQL Server的GROUP_CONCAT功能? – jarlh 2014-12-04 08:12:15

+0

什麼連接將子查詢鏈接到主查詢? – Matt 2014-12-04 08:17:44

+0

一些LEFT加入INNER連接,實際上where子句是將子查詢連接到主查詢,我猜。 – VJ22 2014-12-04 09:19:19

回答

0

一個所述的方法,我知道(也可能是最簡單的你)是XML的絕招:

select 
......., 
    stuff(
      (
      select 
       ',' + 
       CASE 
        WHEN pm.PaymentType = 1 THEN 'Cash'  
        WHEN pm.PaymentType = 2 THEN 'Check'  
        WHEN pm.PaymentType = 3 THEN 'Credit Card' 
        ELSE 'Money Order' 
       END 
      from <some tables with all the joins> 
      where <all the conditions> 
      for xml path(''), type 
     ).value('.', 'varchar(max)') 
    ,1,1,'') AS [PAYMENT TYPE] 
....... 
from 
<some more tables with joins> 
where 
<some other conditions> 
+0

其實我正在運行一個.dqy文件,用於直接導入Excel表格中的所有數據。我不認爲XML將在這種類型的文件中工作。 – VJ22 2014-12-04 09:15:45

+0

我試過上面的代碼,它的工作.....謝謝,應該早些時候嘗試過。 – VJ22 2014-12-09 07:20:25