【发布时间】:2015-11-16 06:20:16
【问题描述】:
我有如下数据(全部在 PRODUCT_STATUS 表中)
CatID ProductID Active
C01 P001 True
C01 P002 False
C01 P003 True
C02 P001 False
C01 P004 False
现在,我想要如下所示的枢轴,在这里:使用参数 C01,按 C01 选择组。
CatID P001 P002 P003 P004
C01 1 0 1 0
我用
create PROC GET_GROUP_STATUS @GID CHAR(3)
AS
BEGIN
DECLARE @ColumnHeaders VARCHAR(MAX)
SET @ColumnHeaders = STUFF( (SELECT ', [' + ProductID + ']'
FROM PRODUCT_STATUS
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)')
, 1, 2, '');
DECLARE @SQL NVARCHAR(MAX)
SET @SQL =
'SELECT * FROM
(
SELECT CatID, ProductID , CAST(ALLOW AS INT) AS ALLOW
FROM PRODUCT_STATUS
WHERE CatID = @GID
) t
PIVOT
(
MAX([ALLOW]) FOR [ALLOW] IN (' + @ColumnHeaders + ')
) p';
--PRINT @SQL
EXEC sp_executesql @SQL, N'@GID CHAR(3)', @GID
END
我运行 store GET_GROUP_STATUS C01 ,但似乎它不起作用。
【问题讨论】:
-
你运行后的结果是什么?
标签: sql-server tsql stored-procedures pivot