一列多行值合併成乙個值

2021-05-31 21:41:54 字數 1481 閱讀 1406

現在有兩張表,一張手機型號表(phonemodel),一張手機製造商表(phonecompany)

phonemodel表結構如下:

phonecompany表結構如下:

,phonemodel表通過欄位coid與phonecompany表的coid相關聯.現在的需求是如下圖":

新增一列查詢models,這列顯示乙個手機製造商所生產的所有手機型號。因為乙個手機製造商會生產很多態號的手機,就需要把多條手機型號的記錄合併成乙個值.

使用for xml path可以實現類似的需求。

select coid,company,(select model+','

from dbo.phonemodel where coid=pc.coid for xml path('')) as models from dbo.phonecompany as pc

於是寫出了上述sql句,查詢結果如下:

最後乙個型號總是有逗號(如下圖)

於是改進之,把最後乙個逗號去掉

select coid,company,left(models,len(models)-1) as models from
(
select coid,company,(select model+','

from dbo.phonemodel where coid=pc.coid for xml path('')) as models from dbo.phonecompany as pc

)
as p
查詢結果如下

於是把最後乙個逗號都去掉了.

但是乙個詭異的問題出現了,通過asp程式讀取models這列的值會讀取不到值,查詢分析器裡執行是有值的,急中生智再做一次變換

select coid,company,left(models,len(models)-1) as models from
(
select coid,company,convert(varchar(5000),(select model+','

from dbo.phonemodel where coid=pc.coid for xml path(''))) as models from dbo.phonecompany as pc

)
as p

合併多行的某一列值

合併多行的某一列值 stuff 刪除指定的字元,並在指定的起點處插入另一組字元。create table tb id int,col1 varchar 10 go insert tb select1,曾祥展 insert tb select1,學無止境 insert tb select1,ok in...

一列多行合併一列一行

方法1 定義臨時的varchar變數,通過游標一條條讀取,然後在迴圈中改變臨時變數的值最終輸出 關於游標的方法,這裡再敘述。sql2008中的方法 create table tb id int,value varchar 10 insert into tb values 1,aa insert in...

dataframe多列合併成一列

dataframe的幾列資料合併成為一列 dataframe的幾列資料合併成為一列 1.1 方法歸納 1.2 str.cat函式詳解 1.2.1 語法格式 1.2.2 引數說明 1.2.3 核心功能 1.2.4 常見範例 dataframe的幾列資料合併成為一列 1.1 方法歸納 使用 直接將多列合...