簡體   English   中英

以有意義的方式透視數據

[英]Pivoting Data in a meaningful way

SQL 服務器 2016

我得到了一個有趣的表結構,並被要求對其進行一些有意義的報告以查看增長變化,並且需要幫助了解如何將數據旋轉到一個更容易在 SSRS 中使用的結果集。

表結構:

CREATE TABLE [dbo].[Person_Order_ETL_Delay](
       [ID] [int] IDENTITY(1,1) NOT NULL,
       [Person_Name] [varchar](255) NULL,
       [Order_DATE] [date] NOT NULL,
       [Order_INTERVAL] [char](5) NOT NULL,
       [00:00-00:30] [int] NOT NULL,
       [00:30-01:00] [int] NOT NULL,
       [01:00-01:30] [int] NOT NULL,
       [01:30-02:00] [int] NOT NULL,
       [02:00-02:30] [int] NOT NULL,
       [02:30-03:00] [int] NOT NULL,
       [03:00-03:30] [int] NOT NULL,
       [03:30-04:00] [int] NOT NULL,
       [04:00-04:30] [int] NOT NULL,
       [04:30-05:00] [int] NOT NULL,
       [05:00-05:30] [int] NOT NULL,
       [05:30-06:00] [int] NOT NULL,
       [06:00-06:30] [int] NOT NULL,
       [06:30-07:00] [int] NOT NULL,
       [07:00-07:30] [int] NOT NULL,
       [07:30-08:00] [int] NOT NULL,
       [08:00-08:30] [int] NOT NULL,
       [08:30-09:00] [int] NOT NULL,
       [09:00-09:30] [int] NOT NULL,
       [09:30-10:00] [int] NOT NULL,
       [10:00-10:30] [int] NOT NULL,
       [10:30-11:00] [int] NOT NULL,
       [11:00-11:30] [int] NOT NULL,
       [11:30-12:00] [int] NOT NULL,
       [12:00-12:30] [int] NOT NULL,
       [12:30-13:00] [int] NOT NULL,
       [13:00-13:30] [int] NOT NULL,
       [13:30-14:00] [int] NOT NULL,
       [14:00-14:30] [int] NOT NULL,
       [14:30-15:00] [int] NOT NULL,
       [15:00-15:30] [int] NOT NULL,
       [15:30-16:00] [int] NOT NULL,
       [16:00-16:30] [int] NOT NULL,
       [16:30-17:00] [int] NOT NULL,
       [17:00-17:30] [int] NOT NULL,
       [17:30-18:00] [int] NOT NULL,
       [18:00-18:30] [int] NOT NULL,
       [18:30-19:00] [int] NOT NULL,
       [19:00-19:30] [int] NOT NULL,
       [19:30-20:00] [int] NOT NULL,
       [20:00-20:30] [int] NOT NULL,
       [20:30-21:00] [int] NOT NULL,
       [21:00-21:30] [int] NOT NULL,
       [21:30-22:00] [int] NOT NULL,
       [22:00-22:30] [int] NOT NULL,
       [22:30-23:00] [int] NOT NULL,
       [23:00-23:30] [int] NOT NULL,
       [23:30-00:00] [int] NOT NULL
) ON [PRIMARY]
GO

表邏輯:此表將表示目標應用程序的 ETL 活動與源應用程序中的可用性。

在此處輸入圖像描述

我們以 ID = 12 為例。 2020 年 4 月 1 日,源應用程序接受 Bilbo 的訂單並以 05:30(系統時間 [Order_INTERVAL])的訂單間隔處理它們,我們看到的是數據可用於目標報告應用程序(通過ETL 時間戳)在 [06:00-06:30](最終能夠捕獲 6 個卷)和 [06:30-07:00](另外 3 個卷已處理並可用於 ETL)之間。

所以我們有一個源到目標的延遲。

系統間隔已在 05:30 時間間隔分配了這些量(6+3=9 個總訂單),但是,目標系統直到 06:00 間隔才能夠捕獲它們,其余的在 06:30 間隔用於目標報告應用程序。

因此,這證明交易完成與報告應用程序的可用性之間存在一些延遲。

我想做的是產生一個結果集來表示數據更像這樣:

在此處輸入圖像描述

透視相關的 ETL 間隔數據,顯示交易量和占總交易量的百分比。 相關含義,該卷的下限應該是該卷的源應用程序間隔桶,而上限將是該系列中包含大於 0 的卷的最后一個 ETL 桶。

對此的任何幫助都將非常出色。

你需要unpivot來做到這一點。

請在此處查看 db<> fiddle 示例。

結果片段:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM