34,837
社区成员




declare @sql varchar(8000)
select @sql=isnull(@sql+'],[' , '') + fdbs from daysphz group by fdbs
set @sql='['+@sql+']'
exec ('select * from (select spid,shl,fdbs from daysphz ) a pivot (sum(shl) for fdbs in ('+@sql+'))b
order by spid')
------------------
SPH00000001 NULL NULL NULL NULL NULL NULL NULL NULL NULL
SPH00000002 11.00 NULL NULL NULL NULL NULL NULL NULL 9.00
SPH00000003 1.00 NULL NULL NULL NULL NULL NULL NULL NULL
SPH00000004 NULL NULL NULL NULL NULL NULL NULL NULL NULL
SPH00000005 NULL NULL NULL NULL NULL NULL NULL NULL NULL
CREATE TABLE #MyTable(
ContainerName VARCHAR(12)
, FRD_RateName NVARCHAR(12)
, FRD_Charges INT
)
INSERT INTO #MyTable
SELECT '45FR',N'标准报价',4000
UNION
SELECT '45FR',N'箱扣100',41
UNION
SELECT '45FR',N'退佣10 ',1
UNION
SELECT '45GP',N'标准报价',4100
UNION
SELECT '45GP',N'箱扣100 ',42
UNION
SELECT '45GP',N'退佣10',2
UNION
SELECT '40GP',N'标准报价',4200
UNION
SELECT '40GP', N'箱扣100', 43
UNION
SELECT '40GP',N'退佣10', 3
UNION
SELECT '20GP', N'标准报价',4300
UNION
SELECT '20GP',N'箱扣100', 44
UNION
SELECT '20GP',N'',4
DECLARE @Sql VARCHAR(MAX),@Sql1 VARCHAR(MAX)
SELECT @Sql=ISNULL(@Sql+',','')+'['+ContainerName+']' FROM #MyTable GROUP BY ContainerName
SELECT @Sql1=ISNULL(@Sql1+',','')+'ISNULL('+'['+ContainerName+']'+',0) AS '+'['+ContainerName+']' FROM #MyTable GROUP BY ContainerName
SELECT @Sql='SELECT FRD_RateName,'+@Sql1+'
FROM #MyTable a
PIVOT(MAX(FRD_Charges) FOR ContainerName IN('+@Sql+')) p '
EXEC(@Sql)
DROP TABLE #MyTable
declare @sql varchar(8000)
select @sql=isnull(@sql+'],[' , '') + fdbs from daysphz group by fdbs
set @sql='['+@sql+']'
exec ('select * from (select spid,isnull(shl,0),fdbs from daysphz ) a pivot (sum(shl) for fdbs in ('+@sql+'))b
order by spid')
declare @sql varchar(8000)
select @sql=isnull(@sql+'],[' , '') + fdbs from daysphz group by fdbs
set @sql='['+@sql+']'
exec ('select * from (select isnull(spid,0),isnull(shl,0),isnull(fdbs,0) from daysphz ) a pivot (sum(shl) for fdbs in ('+@sql+'))b
order by spid')
declare @sql varchar(8000),@col varchar(8000)
SELECT
@sql=isnull(@sql+'],[' , '') + fdbs,
@col=ISNULL(@col,'')+',ISNULL('+fdbs+',0) as '+fdbs
from daysphz
group by fdbs
set @sql='['+@sql+']'
exec ('select spid'+@col+' from (select spid,shl,fdbs from daysphz ) a pivot (sum(shl) for fdbs in ('+@sql+'))b order by spid')
declare @sql varchar(8000),@sql2 varchar(8000)
select @sql=isnull(@sql+',','')+'['+fdbs+']'
from daysphz group by fdbs
select @sql2=isnull(@sql2+',','')+'isnull(['+fdbs+'],'''') '''+fdbs+''' '
from daysphz group by fdbs
exec('select spid,'+@sql2+' from (select spid,shl,fdbs from daysphz) a pivot(sum(shl) for fdbs in ('+@sql+')) b
order by spid')