22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT *
FROM table1
PIVOT (
MAX(字段2)
FOR 字段3 IN ([2014], [2015])
) p
字段1 2014 2015
----- ---- ----
a A1 A2
b dd ff
c A4 A3
d a2 a1
--动态
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL='SELECT 字段1'
SELECT @SQL=@SQL+',MAX(CASE WHEN 字段3='''+CAST(字段3 AS VARCHAR)+''' THEN 字段2 END)['+CAST(字段3 AS VARCHAR)+']'
FROM TB GROUP BY 字段3
SET @SQL=@SQL+'FROM TB GROUP BY 字段1'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT 字段1
,MAX(CASE WHEN 字段3='2014' THEN 字段2 END)[2014]
,MAX(CASE WHEN 字段3='2015' THEN 字段2 END)[2015]
FROM TB
GROUP BY 字段1
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL='SELECT 字段1'
SELECT @SQL=@SQL+',MAX(CASE WHEN 字段3='''+CAST(字段3 AS VARCHAR)+''' THEN 字段2 END)['+CAST(字段3 AS VARCHAR)+']'
FROM TB GROUP BY 字段3
SET @SQL=@SQL+'FROM TB GROUP BY 字段1'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT 字段1
,MAX(CASE WHEN 字段3='2014' THEN 字段2 END)[2014]
,MAX(CASE WHEN 字段3='2015' THEN 字段2 END)[2015]
FROM TB
GROUP BY 字段1