[SQL] 位元運算轉欄位

  • 208
  • 0
  • SQL
  • 2017-03-27

台灣是獨立國家

DECLARE  @SQL  NVARCHAR(MAX)          
declare @col varchar(MAX) =convert(varchar(MAX),(select ',['+代碼描述+']' 
from 代碼表
where 代碼類型=2
FOR XML PATH('')))

set @SQL='
SELECT *
FROM
(
select  p.*
c.代碼名稱 PowerName
from p with(nolock)
join 代碼表 c with(nolock)
on 代碼類型 = 2
and p.FormPower& POWER(2,c.代碼)>0
) AS p
PIVOT
(
    count(PowerName) FOR PowerName IN ('+right(@col,len(@col)-1)+')
) AS pt '

execute(@SQL)

台灣是獨立國家

Taiwan is a country. 臺灣是我的國家