22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @SQL VARCHAR(8000),@TABLES VARCHAR(8000)
SET @SQL='SELECT bh'
SELECT @SQL=@SQL+',MAX(CASE WHEN name='''+name+'''THEN length END)length'+RN
+',MAX(CASE WHEN name='''+name+'''THEN width END)width'+RN
+',MAX(CASE WHEN name='''+name+'''THEN height END)height'+RN
+',MAX(CASE WHEN name='''+name+'''THEN parts END)parts'+RN
FROM(
SELECT name,CAST(ROW_NUMBER()OVER(ORDER BY name)AS VARCHAR(10))RN
FROM tb1
GROUP BY name
)T
ORDER BY name
SET @SQL=@SQL+' FROM tb1 GROUP BY bh'
EXEC(@SQL)
DECLARE @SQL VARCHAR(8000),@TABLES VARCHAR(8000)
SET @SQL='SELECT T1.bh,T1.length,T1.width,T1.height,T1.parts'
SET @TABLES=' FROM tb1 T1'
SELECT @SQL=@SQL+',T'+RN+'.length length'+RN+',T'+RN+'.width width'+RN+',T'+RN+'.height height'+RN+',T'+RN+'.parts parts'+RN
,@TABLES=@TABLES+' JOIN tb1 T'+RN+' ON T1.bh=T'+RN+'.bh AND T'+RN+'.name='''+name+''''
FROM(
SELECT name,CAST(ROW_NUMBER()OVER(ORDER BY name)AS VARCHAR(10))RN
FROM tb1
GROUP BY name
)T
WHERE RN>1
ORDER BY name
--PRINT @SQL
SELECT TOP 1 @SQL=@SQL+@TABLES+' WHERE T1.name='''+name+''''
FROM tb1
ORDER BY name
PRINT @SQL
EXEC(@SQL)