有效地透視不同記錄
透視查詢在將資料轉換為表格格式、實現輕鬆資料分析方面發揮著至關重要的作用。但是,在處理不同記錄時,資料透視查詢的預設行為可能會出現問題。
問題:忽略不同值
考慮下表:
------------------------------------------------------ | Id Code percentage name name1 activity | ----------------------------------------------------- | 1 Prashant 43.43 James James_ Running | | 1 Prashant 70.43 Sam Sam_ Cooking | | 1 Prashant 90.34 Lisa Lisa_ Walking | | 1 Prashant 0.00 James James_ Stealing | | 1 Prashant 0.00 James James_ Lacking | | 1 Prashant 73 Sam Sam_ Cooking 1 | ------------------------------------------------------
傳統的資料透視查詢,例如as:
SELECT Id,Code, MAX(CASE WHEN name = 'James' THEN activity END) AS James, MAX(CASE WHEN name1 = 'James_' THEN percentage END) AS James_, MAX(CASE WHEN name = 'Sam' THEN activity END) AS Sam, MAX(CASE WHEN name1 = 'Sam_' THEN percentage END) AS Sam_, MAX(CASE WHEN name = 'Lisa' THEN activity END) AS Lisa, MAX(CASE WHEN name1 = 'Lisa_' THEN percentage END) AS Lisa_ FROM A GROUP BY Id, Code
將產生下表:
------------------------------------------------------------------- Id Code James James_ Sam Sam_ Lisa Lisa_ ------------------------------------------------------------------- 1 Prashant Running 43.43 Cooking 3.43 Walking 90.34 1 Prashant Stealing 0.0 NULL NULL NULL NULL -------------------------------------------------------------------
此處的問題是,當name 重複且百分比為0時,資料透視查詢會忽略name1 的不同值。在這種情況下,James 的「Lacking」活動就會遺失。
解決方案:使用ROW_NUMBER() 進行準確度
為了解決這個問題,我們可以引入ROW_NUMBER():
;with cte as ( select *, ROW_NUMBER() over (partition by name order by percentage desc) ROWNUM from A ) ...
透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>透過🎜>通過使用ROW_NUMBER(),我們根據名稱對資料進行分區,並為每一行分配一個唯一的編號在該分區內。這使我們能夠保留活動和百分比之間的關聯,即使名稱重複也是如此。
結果表將是:
---------------------------------------------------------- | Id Code James James_ Sam Sam_ Lisa Lisa_ ---------------------------------------------------------- | 1 Prashant Running 43.43 Cooking 1 73 Walking 90.34 | 1 Prashant Stealing 0.00 Cooking 3.43 NULL NULL | 1 Prashant Lacking 0.00 NULL NULL NULL NULL ----------------------------------------------------------
所有活動,包括 James 的「Lacking」 ,現在表示在資料透視表中。此技術可確保保留不同的值,為分析提供準確的數據。
以上是如何準確地透視具有不同記錄的資料以避免遺失資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!