看來我誤解你的意思,哎呀呀。你正在將信息遷移到另一個表中?
但首先,關於我所用術語標準化
First Normal Form
- Eliminate repeating groups in individual tables.
- Create a separate table for each set of related data.
- Identify each set of related data with a primary key.
的音符所以顯然我錯了有關規範化。 Ouch。好東西 我還年輕,呃? :/
我花了一些時間重新評估這個(一個致命的錯誤,不?),以及SQL Server 2000
的限制是什麼。我在redware - SQL SERVER Handbook上找到了有用的SQL Server 2000手冊編譯。
說到表格表達式......唯一出現的是subqueries
和views
,雖然沒有真正的排序功能可用(謝天謝地,您可以創建Functions
)。
雖然你可能通過某種草書添加一個值,爲什麼?
- 你仍然會被解析表至少ň X #Columns是逆轉置。不需要複雜的支點(反正不存在)。
- 'C1'很簡單,很容易修改爲行,而不是使用任何昂貴的草書。
- 你想連接表,所以最簡單的方法仍然是
UNION ALL
。
- 可以在連接後運行一次GROUP BY。簡單而優雅。
SOLUTION:
SELECT memID
, Col
, SUM(C1) AS Count
FROM (
SELECT 'C1' AS [Col], memID, C1 FROM #Test2
UNION ALL SELECT 'C2' AS [Col], memID, C2 FROM #Test2
UNION ALL SELECT 'C3' AS [Col], memID, C3 FROM #Test2
UNION ALL SELECT 'C4' AS [Col], memID, C4 FROM #Test2
UNION ALL SELECT 'C5' AS [Col], memID, C5 FROM #Test2) AS A
GROUP BY memID, Col
ORDER BY memID ASC, Col ASC
源表:
CREATE TABLE #Test2 (memID INT, C1 INT, C2 INT, C3 INT, C4 INT, C5 INT)
INSERT INTO #Test2 (memId, C1, C2, C3, C4, C5)
VALUES (123, 10, 20, 0, 40, 0)
, (123, 0, 20, 0, 40, 5)
, (122, 5, 20, 10, 15, 0)
, (122, 5, 0, 0, 0, 60)
, (155, 10, 0, 0, 10, 10)
, (155, 0, 0, 0, 50, 50)
結果:
memID Col Count
122 C1 10
122 C2 20
122 C3 10
122 C4 15
122 C5 60
123 C1 10
123 C2 40
123 C3 0
123 C4 80
123 C5 5
155 C1 10
155 C2 0
155 C3 0
155 C4 60
155 C5 60
所以我認爲你的最初想法是正確的。 乾杯。
使用樞軸.....? –
它的SQL 2000分貝和unpivot似乎不被支持 –
人們仍然使用SQL2000?!我的吊... ...... – DavidG