请求高手,写个语句,如何把一列数据按条件,分成多列。

------解决思路----------------------
分两列还可以这样,分多列就用动态吧
;with t0(hno, qpp) AS(
select 2, 'B=B'
union all select 1, 'B33'
union all select 1, 'B3B'
union all select 2, 'B=C'
union all select 1, 'C3C'
union all select 2, 'A=B'
), t AS(
select hno, qpp
, ROW_NUMBER() OVER(ORDER BY GetDate()) rn
from t0
), t1 AS(
select hno, qpp
, ROW_NUMBER() OVER(PARTITION BY hno ORDER BY rn) rn
from t
), t2 AS(
select rn
, MIN(hno) as hno_1
, MAX(hno) as hno_2
from t1
group by rn
)
select t2.hno_1
, t1.qpp as qpp_1
, t2.hno_2
, tt.qpp as qpp_2
from t2 join t1 on t2.rn=t1.rn and t2.hno_1=t1.hno
join t1 tt on t2.rn=tt.rn and t2.hno_2=tt.hno
/*-------------------------
hno_1 qpp_1 hno_2 qpp_2
-----------------------
1 B33 2 B=B
1 B3B 2 B=C
1 C3C 2 A=B
-------------------------*/
------解决思路----------------------
--动态
DECLARE @SQL VARCHAR(8000)
DECLARE @M INT,@I VARCHAR(10)
SET @SQL=''
SELECT @M=COUNT(DISTINCT hengnumber)FROM TB
SET @I=1
WHILE @I<=@M
SELECT @SQL=@SQL+',MAX(CASE WHEN HRN='+@I+' THEN hengnumber END)[hengnumber_'+@I+']'
+',MAX(CASE WHEN HRN='+@I+' THEN Quo_Paper END)[Quo_Paper_'+@I+']',@I=@I+1
SET @SQL='SELECT '+STUFF(@SQL,1,1,'')
+' FROM(SELECT *,ROW_NUMBER()OVER(PARTITION BY hengnumber ORDER BY GETDATE())RN'
+',DENSE_RANK()OVER(ORDER BY hengnumber)HRN'
+' FROM TB where Quo_no=''P1503240008'')T GROUP BY RN'
--PRINT @SQL
EXEC(@SQL)