【发布时间】:2014-07-04 19:36:47
【问题描述】:
我有下表保存每日数据:
我需要读取最近 7 天的数据并将行转换为列以将其保存在 Excel 报表中。我正在尝试使用 SSIS 自动执行此操作。 请注意,此处将在转置后作为列运行的日期将基于过去 7 天是动态的,因此我不能在数据透视函数中使用静态列名。 所需的输出将如下所示:
请建议我如何通过 MS-SQL 或 SSIS 完成输出。提前致谢。以下是表架构和示例数据:
IF OBJECT_ID('tempdb..#PriorityTrends') IS NOT NULL DROP TABLE #PriorityTrends
CREATE TABLE #PriorityTrends (
CountDate DATETIME,
[Priority 1] INT,
[Priority 2] INT,
[Priority 3] INT,
[Priority 4] INT,
[Priority 5] INT,
Total INT
)
INSERT INTO #PriorityTrends
VALUES ('6/24/2014', 163, 235, 741, 265, 1932, 1404)
INSERT INTO #PriorityTrends
VALUES ('6/25/2014', 174, 368, 775, 256, 2634, 1573)
INSERT INTO #PriorityTrends
VALUES ('6/26/2014', 201, 448, 703, 270, 2717, 1622)
INSERT INTO #PriorityTrends
VALUES ('6/27/2014', 140, 464, 612, 257, 1776, 1473)
INSERT INTO #PriorityTrends
VALUES ('6/30/2014', 106, 333, 1274, 311, 1480, 2024)
INSERT INTO #PriorityTrends
VALUES ('7/1/2014', 164, 834, 1533, 1145, 10483, 3676)
INSERT INTO #PriorityTrends
VALUES ('7/2/2014', 136, 378, 1421, 391, 9018, 2326)
【问题讨论】:
-
可以用SQL server自己完成。为此,您不需要 SSIS 的强大功能。请以文本形式而不是图像形式输入您的原始表格,我可以提供帮助。您需要使用 2 件事 - 旋转和动态 sql 来实现结果。
-
你不能从管理工作室复制粘贴结果集并在这里发布吗?
-
我就是这么做的。但它以这种奇怪的格式显示。对不起,但我不知道如何才能更优雅地表达。
-
你能给我创建表和示例行的sql吗?我不会输入所有这些。
-
在问题中查看我的更新。我在那里提供了样品。谢谢。
标签: sql sql-server excel ssis transpose