내가 죄송합니다, 당신의 지점을 오해 보인다. 정보를 다른 테이블로 마이그레이션하고 있습니까?
하지만 먼저, 용어 정상화
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.
의 내 사용에 대한 메모 그래서 분명 나는 정상화에 대해 잘못이었다. 아참. 좋은 물건 나는 아직도 젊다. 그렇지? :/
나는 이것을 재평가하는데 (치명적인 실수는 아니겠습니까?) 그리고 SQL Server 2000
의 한계는 무엇입니까? redware - SQL SERVER Handbook에서 유용한 SQL Server 2000 설명서 컴파일을 발견했습니다.
표 표현식에서 나타나는 유일한 사실은 subqueries
과 views
입니다. 단, 진정한 순위 지정 기능을 사용할 수는 없지만 (고맙게도 Functions
을 만들 수 있습니다).
의 경우 일종의 필기체를 통해 값을 추가 할 수 있습니까?
- 당신은 여전히 #Columns은 피봇 팅 할 테이블을 적어도 N X를 분석 할 것입니다. 아니 복잡한 피벗 (어쨌든 존재하지 않았다) 필요합니다.
- 값 비싼 필기체를 사용하는 대신
SELECT
'C1'은 간단하고 쉽게 행을 수정할 수 있습니다.
- 테이블을 연결하려는 경우 가장 간단한 방법은 여전히
UNION ALL
입니다.
- 연결 후 GROUP BY를 한 번 실행할 수 있습니다.간단하고 우아한.
해결책 :
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 DB와 unpivot가 지원되지 않는 것 같습니다 –
사람들은 여전히 SQL2000을 사용합니까?! 조문 ... – DavidG