gpt4 book ai didi

返回动态旋转数据的 SQL 函数

转载 作者:行者123 更新时间:2023-12-04 13:55:58 25 4
gpt4 key购买 nike

是否有可能在 MSSQL 中有一个表值函数,它接受一个属性并使用 Pivot 函数生成关联的 SQL 语句?

CREATE FUNCTION dbo.fnPivot (@EntityTypeID int)
RETURNS TABLE
AS
BEGIN
DECLARE @SQL varchar(MAX);
DECLARE @COLS varchar(MAX);

select @COLS=coalesce(@COLS+',','')+'['+Name+']'from c_EntityAttribute WHERE EntityTypeID = @EntityTypeID;

SET @SQL = 'SELECT * FROM (SELECT EntityInstanceID, AttributeName, Value FROM v_EntityElementData WHERE EntityTypeID = 1) as s';
SET @SQL = @SQL + 'PIVOT ( MIN(Value) FOR AttributeName IN (' + @COLS + ') ) AS p';

RETURN EXEC sp_ExecuteSQL @SQL ;
END

最佳答案

不幸的是,除了存储过程之外,SQL Server 会跟踪所有 View 、函数等的输出的表定义。因此列和类型不能在输入上动态更改。

出于这个原因,我从未发现 PIVOT 运算符有用。通常,获取不同列数据的唯一方法是将其视为 XML。

你为什么要旋转它?这通常是一个 UI 问题,因此我建议在 UI 或 SSRS 等处执行此操作。

关于返回动态旋转数据的 SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1026628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com