我有一個簡單的數據表,需要將行數據轉換爲列數據。例如,讓我創建一個簡單的員工表:如何將行數據轉換爲列數據?
我需要使用上面的SQL創建表結構這樣的側方比較報告:
有人可以使用上面的示例表向我展示sql代碼嗎?或者可以使用內置的ASP.net或DevExpress控件自動完成?
您的反饋總是讚賞!
謝謝!
我有一個簡單的數據表,需要將行數據轉換爲列數據。例如,讓我創建一個簡單的員工表:如何將行數據轉換爲列數據?
我需要使用上面的SQL創建表結構這樣的側方比較報告:
有人可以使用上面的示例表向我展示sql代碼嗎?或者可以使用內置的ASP.net或DevExpress控件自動完成?
您的反饋總是讚賞!
謝謝!
有使用SQL it's:
WITH FieldValueCte AS(
SELECT Name,
'Department' Field,
Department Value
FROM Table1 UNION ALL
SELECT Name,
'Sex' Field,
Sex Value
FROM Table1 UNION ALL
SELECT Name,
'HireDate' Field,
HireDate Value
FROM Table1 UNION ALL
SELECT Name,
'Salary' Field,
Salary Value
FROM Table1 UNION ALL
SELECT Name,
'Comments' Field,
Comments Value
FROM Table1)
SELECT [Field], [John Doe], [Jane Smith], [Peter Parker], [Jessica James]
FROM
(SELECT Field, Name, Value
FROM FieldValueCte) AS SourceTable
PIVOT
(
MIN(Value)
FOR Name IN ([John Doe], [Jane Smith], [Peter Parker], [Jessica James])
) AS PivotTable;
您正在尋找的是「透視」功能。
你可以手工做他們的SQL裏面,但它也像DevExpress的有這個控制...
http://www.devexpress.com/Products/NET/Controls/ASP/Pivot_Grid/
- 編輯 -
像上面的評議發佈,here's an introduction to the pivot function in SQL Server ......什麼讓這個棘手的是,除非你確切地知道什麼值將組成你的列,你將不得不使用動態SQL來構建樞紐。
因爲它可以是一個有點棘手的SQL做的,我會盡量堅持到DevExpress的,因爲你已經擁有它......
我認爲,如果你是多個數據點添加到您的數據透視網格,它看起來像你所期望的。下面是從DevExpress的屏幕截圖,類似於你在找什麼...
Here's the page that shows this technique ...在你的情況,而不是排分組,你可能只是做一個「總計」,然後隱藏列...
我已經使用過幾次Devexpress PivotGrid,似乎想要總共有兩個或更多的字段匯合的東西。按部門顯示男性女性女性的平均工資。(部門設置爲「行」字段和性別設置爲「列」字段,薪酬設置爲aspxPivotGrid的「數據」字段)我不知道是否有可能讓樞紐網格顯示每個字段名稱在第一個如我的示例所示,後續字段中的行和列值。 – David 2011-04-19 20:13:07
您能否使用上面的示例表格顯示數據透視SQL查詢? – David 2011-04-19 20:18:24
我想你仍然想念我後。我不想要任何分組或合計。 aspxPivot控件需要在屏幕截圖的白色區域中顯示總數。如果你不給它一些東西或者通過電網組顯示什麼都沒有。我不確定它的解決方案。 – David 2011-04-19 21:08:25
SQL中的數據透視http://msdn.microsoft.com/en-us/library/ms177410.aspx – Magnus 2011-04-19 19:25:16
@Magnus它看起來像SQL中的Pivot需要某種類型的聚合,比如count/sum/avg。有人可以展示如何使上表過渡發生?即使它使用CASE語句。 – David 2011-04-19 21:10:05
看看這個http://stackoverflow.com/questions/1343145/tsql-pivot-without-aggregate-function – Magnus 2011-04-19 21:26:39