如何在 Microsoft SQL Server 中制作非数值表的数据透视表?

Posted

技术标签:

【中文标题】如何在 Microsoft SQL Server 中制作非数值表的数据透视表?【英文标题】:How to make pivot table of a non numeric table in Microsoft SQL Server? 【发布时间】:2021-12-26 07:46:23 【问题描述】:

我想在我的后端(MSQL Server 和 Django)中进行查询并将其转换为数据透视表。我更喜欢用 SQL 而不是 Python(我无法安装 Pandas)。 你能帮忙吗?我发现的所有东西都是数值。如果在 SQL 中无法做到这一点,那么关于在 Python 中转换它的帮助也将不胜感激。谢谢

我的数据:

我想要这个:

【问题讨论】:

***.com/questions/12422901/… @IanKenney 谢谢伊恩,但它是用于数值的。正确的?我的是一个标志,我不确定应该使用哪个聚合函数 数据类型与任何东西无关。枢轴仍然是枢轴。 您应该仍然可以使用 min 或 max 之类的聚合 【参考方案1】:

使用dynamic pivot 如下所示来达到预期的效果。

declare @columns varchar(max)='',@sql nvarchar(max);

SELECT @columns+=QUOTENAME(flag_type) + ',' from (select distinct flag_type from 
YourTableName) t
SET @columns = LEFT(@columns, LEN(@columns) - 1);

set @sql='
SELECT *  FROM   
(
select items_col,flag_type,flag_value from YourTableName
) t 
PIVOT(Max(flag_value)
FOR flag_type IN ('+@columns+')
) AS pivot_table
'

EXEC (@Sql)

【讨论】:

【参考方案2】:

你可以试试这个:

https://github.com/pivot-my-stuff/easy_pivot

我在“示例”文件夹中创建了一个 SQL 文件,用于透视您的数据。这可能只会输出到您的 SQL Server Management Studio 显示,因为动态查询作为子进程运行。听起来您需要对返回的数据进行更多自动化。但我提供它以防你觉得它有用。

但是...您可以运行带有标志的 Easy Pivot 以输出 SQL 代码:

声明@generate_source_code_only AS BIT = 1

如果您期望没有新的标志类型,那么您可能可以修改它生成的 SQL 代码并使用它自动执行。您只需要更改此代码的 FROM 部分中的临时表,以匹配保存预透视数据的实际表的名称。

【讨论】:

以上是关于如何在 Microsoft SQL Server 中制作非数值表的数据透视表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Microsoft SQL Server 2017 上调试存储过程?

如何在 Microsoft PowerBI 中使用 SQL Server 存储过程?

如何在 Microsoft SQL Server Management Studio 2014 中更新表

如何将 sql server 链接到 Microsoft Access?

如何在 Microsoft SQL Server 中制作非数值表的数据透视表?

收藏Windows 如何安装Microsoft SQL Server 2000