样本表:
ID 产品
(1)商业、商业、金融、金融等行业的商品、商品、商业、金融、商业、金融、金融、商业、金融等行业的商品、金融、金融等行业的商品、商业、金融、金融、商业、金融、商业、金融等行业。
一、转轨
1._
2.准税
(2)商业、商业、金融、商业、金融、金融、商业、金融、商业、金融、金融等行业的商品、商业、金融等行业的自愿性、商品性等。
(3)转制、转制、转制
3._~_
最后,我想得到一个表w/ 3行(每个is一行) w/逗号分隔列表中的产品:
ID 产品
(1)产品价格、政策、发票。
2._
第三章:自愿的、自愿的、自愿的
我能够完成这个w/ a用户定义的Scalar函数,但是它非常慢,我相信更合适的解决方案应该是一个游标,但这就是我需要帮助的地方。
发布于 2011-05-24 21:09:40
不确定速度与UDF或游标之间的关系,但您可以尝试一下:
with T(ID, Product) as
(
select 1, 'Survey' union all
select 1, 'Policy' union all
select 1, 'Invoice' union all
select 2, 'Invoice' union all
select 2, 'Survey' union all
select 3, 'Policy' union all
select 3, 'Invoice'
)
select
T1.ID,
stuff((select ', '+T2.Product
from T as T2
where T1.ID = T2.ID
for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '') as Product
from T as T1
group by T1.ID
发布于 2011-05-24 21:18:26
可运行的示例:https://data.stackexchange.com/stackoverflow/q/101245/
DECLARE @tbl AS TABLE (ID int, Product VARCHAR(50))
INSERT INTO @tbl VALUES (
1 ,'Survey'),
( 1 ,'Policy'),
( 1 ,'Invoice'),
( 2 ,'Invoice'),
( 2 ,'Survey'),
( 3 ,'Policy'),
( 3 ,'Invoice')
;WITH IDs AS (
SELECT ID
FROM @tbl
GROUP BY ID
)
SELECT IDs.ID, STUFF(Products.Products, 1, 1, '')
FROM IDs
OUTER APPLY (
SELECT ',' + Product
FROM @tbl AS tbl
WHERE ID = IDs.ID
FOR XML PATH ('')
) AS Products (Products)
https://stackoverflow.com/questions/6116858
复制相似问题