首页 > 解决方案 > SQL Server 中的透视日期

问题描述

我在 SQL Server 中有以下代码,通过Code和 by生成用户计数Date

SELECT
    code, CONVERT(DATE, created_at) Date, COUNT(account_id) UserCount
FROM 
    Code_Table
GROUP BY
    code, CONVERT(DATE, created_at)

这只是通过每个唯一代码和日期组合生成用户计数。我正在尝试使用 Pivot 函数来获取:

我遇到的一个问题是:我想将此查询设置为每天自动更新,这将每天添加一个包含最近日期的附加列。我发现的唯一枢轴函数需要声明从行创建的列数。

我知道这在带有 Pivot 的 Excel 中会更容易完成,但我目前没有这个选项。

任何建议将不胜感激!

标签: sqlsql-server

解决方案


你需要一个动态的支点来完成这个。您需要一个明确的列列表是正确的——因此您将查询您的表并实际生成 SQL 语法作为结果,然后使用 sp_executesql 执行该语法。

您可以在 Stack Overflow: SQL Server 动态 PIVOT 查询上找到它?

一句警告:这通常不是最佳实践。您将无法对此结果集执行任何过滤或任何与日期相关的逻辑。无论您使用什么前端报告软件,您都可能希望在其中实现从旋转获得的类似矩阵/交叉表的行为。


推荐阅读