[英]SQL turn a dynamic number of rows into columns with multiple columns
我有一個大表,最多 90 行和 40 列。 為了 SSRS 報告,需要將此數據轉換為一列,以便它可以顯示為單頁報告。 我不會使用所有行,但有 50 行適用於報告數據集。
我環顧四周尋找幾種解決方案,但它們通常取決於 3 列數據集,並且由於我需要旋轉的列數和行數而不起作用。
問題是,這可能嗎? 如果是這樣,最好的方法是什么?
Pivot 可能是一個解決方案,但我想知道是否有更快的方法將所有 2nd、3rd 等行移動到頂行,並在向上移動的行中的 columnName 前面添加標識符?
示例表:
-------------------------------------------------------------------------------------------------
|ActID | MList | List | Seg | Amt1 | Amt2 | Amt3 | Amt4 | Date1 | Date2 | Char1 |... Char30 |
-------------------------------------------------------------------------------------------------
|ABCD | 1 | 1 | AA | 20.00 | 5.00 | 0 | 0 | 1/2/19 | 2/5/19 | Null | Text1 |
|ABCD | 1 | 2 | AB | 0 | 0 | 0 | 0 | Null | Null | Null | Null |
|ABCD | 1 | 3 | AC | 35.00 | 24.00| 33.00| 0 | Null | Null | Text3 | Text4 |
|ABCD | 2 | 1 | AA | 0 | 0 | 0 | 0 | 5/5/17 | 3/5/12 | Text19 | Text30 |
|ABCD | 2 | 2 | AB | 25.00 | 99.00| 18.00| 5.00 | 2/2/14 | 3/3/19 | Null | Null |
|FGHA | 1 | 1 | AA | 0 | 0 | 0 | 0 | Null | Null | Text22 | Null |
|FGHA | 1 | 2 | AB | 0 | 0 | 0 | 0 | 1/1/20 | 1/1/20 | Null | Text5 |
-------------------------------------------------------------------------------------------------
我試圖做的是使用前兩列作為標識符,然后通過使用 List+Seg 字段作為有用的標記來合並所有金額/字符/日期字段列。
所以最終結果將是這樣的:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ActID | MList | 1AAAmt1 | 1AAAmt2 | 1AAAmt3 | 1AAAmt4 |1AADate1 |1AADate2 | 1AAChar1 |...1AAChar30 | 2ABAmt1 | 2ABAmt2 | 2ABAmt3 | 2ABAmt4 | 2ABDate1 |2ABDate2 | 2ABChar1 |...2ABChar30 | ...etc |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|ABCD | 1 | 20.00 | 5.00 | 0 | 0 | 1/2/19 | 2/5/19 | Null | Text1 | 0 | 0 | 0 | 0 | Null | Null | Null | Null | ...etc |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第一次提出問題時,我通常瀏覽但沒有發現可以完全解決我的行/列數及其動態問題的問題。 希望這能很好地說明問題。
這是使用 SQL Server 2012
SSRS 允許您創建行組和列組以在矩陣中動態旋轉數據。 在此示例中,您將在 ActID 上有一個 Row 組,在 List 上有一個 Column 組。 列組將包含大約 37 列,並為數據集中的每個列表編號重復所有這些列。
如果您在行而不是列中查詢Char
字段,則可以使用可變數量的Char
字段並將其用作報表中的嵌套列組。
一般來說,我發現最好盡可能將數據查詢到行中,並讓報告分組完成繁重的工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.