seelct case when a1=1 then a2 when b1=1 then b2 when c1=1 then c2 end as X2,d,e,f,g,... from tablename
A1 BITDECLARE @SQL VARCHAR(1000) SET @SQL='' SELECT @SQL= CASE WHEN A1=1 THEN 'A2,D,E,F,G...' WHEN B1=1 THEN 'B2,D,E,F,G... ' WHEN C1=1 THEN 'C2,D,E,F,G...' END FROM TABLE1 EXEC('SELECT '+@SQL+' FROM TABLE1')
SET @SQL=''
SELECT @SQL=
CASE WHEN A1=1 THEN 'A2,D,E,F,G...'
WHEN B1=1 THEN 'B2,D,E,F,G... '
WHEN C1=1 THEN 'C2,D,E,F,G...'
END
FROM TABLE1
EXEC('SELECT '+@SQL+' FROM TABLE1')
如果A1,B1,C1中有几个为真,就生成几条记录。
一条原始记录,如果三个为真,就会生成三条记录:
A2,D..
B2,D..
C2,D..
UNION ALL
SELECT B2 AS X,D... FROM TABLE1 WHERE B1=1
UNION ALL
SELECT C2 AS X,D... FROM TABLE1 WHERE C1=1