是否可以使用头作为列,使用值作为另一列来取消对sql server表的透视



我有一个这样的表:

模型名每个托盘的基本单元<1>空>下游
表名 日期托盘
日历 六月 4
国家
产品 6月 下游2
产品BOM 6月9

我建议使用APPLY来取消平移您的表

使用APPLY取消预览

DROP TABLE IF EXISTS #YourTable
CREATE TABLE #YourTable (
ID INT IDENTITY(1,1) PRIMARY KEY
,TableName VARCHAR(100)
,Dates Varchar(25)
,ModelName VARCHAR(100)
,BaseUnitPerPallet TINYINT
,Pallet TINYINT
)
INSERT INTO #YourTable
VALUES 
('Calendar','June',NULL,4,1)
,('Country','June',NULL,2,6)
,('Product','June','DOWNSTREAM',NULL,8)
,('ProductBOM','June','DOWNSTREAM',9,9)
SELECT A.ID,B.*
FROM #YourTable AS A
CROSS APPLY 
(VALUES 
('TableName',A.TableName)
,('Dates',A.Dates)  
,('ModelName',A.ModelName)  
,('BaseUnitPerPallet',CAST(A.BaseUnitPerPallet AS Varchar(100)))
,('Pallet',CAST(A.Pallet AS Varchar(100)))  
) AS B(ColumnName,Val)
--WHERE B.Val IS NOT NULL /*Optional in case you want to ignore NULLs*/
ORDER BY A.ID,B.ColumnName

最新更新