[SQL] 피벗 2000 SQL Server를 사용하여
SQL피벗 2000 SQL Server를 사용하여
나는 함께 내 문제의 샘플 시나리오를 넣고 내가 올바른 방향으로 날 가리 키도록 누군가를 위해 그 정도를 바랍니다.
나는 두 개의 테이블이
제품
Prodost 후
나는 다음의 결과 세트를 필요
해결법
-
==============================
1.우리는 성공적으로 과거에 다음과 같은 방법을 사용했습니다 ...
우리는 성공적으로 과거에 다음과 같은 방법을 사용했습니다 ...
SELECT [p].ProductID, [p].Name, MAX(CASE [m].MetaKey WHEN 'A' THEN [m].MetaValue END) AS A, MAX(CASE [m].MetaKey WHEN 'B' THEN [m].MetaValue END) AS B, MAX(CASE [m].MetaKey WHEN 'C' THEN [m].MetaValue END) AS C FROM Products [p] INNER JOIN ProductMeta [m] ON [p].ProductId = [m].ProductId GROUP BY [p].ProductID, [p].Name
또한의 사용과 유용한 이조 집계 할 수 있습니다 ...
SUM(CASE x WHEN 'y' THEN yVal ELSE 0 END) AS SUMYVal
편집하다
또한 가치는이 ANSI 표준 SQL을 사용하고 플랫폼에서 작동 할 수 있도록되어 지적 :)
-
==============================
2.나는이 두 살 실감하지만, 버그 나 그 동적 SQL 사용에 대한 허용 대답 전화와 가장 upvoted 답변을하지 않습니다 일 :
나는이 두 살 실감하지만, 버그 나 그 동적 SQL 사용에 대한 허용 대답 전화와 가장 upvoted 답변을하지 않습니다 일 :
Select P.ProductId, P.Name , Min( Case When PM.MetaKey = 'A' Then PM.MetaValue End ) As A , Min( Case When PM.MetaKey = 'B' Then PM.MetaValue End ) As B , Min( Case When PM.MetaKey = 'C' Then PM.MetaValue End ) As C From Products As P Join ProductMeta As PM On PM.ProductId = P.ProductId Group By P.ProductId, P.Name
당신은 그룹에 의해를 사용해야하거나 지그재그 결과를 얻을 것이다. 당신이 그룹에 의해를 사용하는 경우, 당신은 집계 함수에 GROUP BY 절에는 없습니다 각 열 (또는 하위 쿼리)를 포장해야합니다.
-
==============================
3.데이터베이스 엔진이 2005이고, 데이터베이스가 2000 호환성 모드에있는 경우, 당신은 2005 데이터베이스에서 쿼리를 실행하여 하위 호환 모드를 해결할 수 있습니다. 같은 DatabaseNameHere.dbo.TableNameHere 같이 쿼리에 테이블 3 부분 명명 규칙을 사용하여 2000 데이터베이스를 대상
데이터베이스 엔진이 2005이고, 데이터베이스가 2000 호환성 모드에있는 경우, 당신은 2005 데이터베이스에서 쿼리를 실행하여 하위 호환 모드를 해결할 수 있습니다. 같은 DatabaseNameHere.dbo.TableNameHere 같이 쿼리에 테이블 3 부분 명명 규칙을 사용하여 2000 데이터베이스를 대상
-
==============================
4.
Select a.ProductId ,a.Name ,(Select c.MetaValue From [Product Meta] c Where c.ProductId = a.ProductId And c.MetaKey = 'A') As 'A' ,(Select d.MetaValue From [Product Meta] d Where d.ProductId = a.ProductId And d.MetaKey = 'B') As 'B' ,(Select e.MetaValue From [Product Meta] e Where e.ProductId = a.ProductId And e.MetaKey = 'C') As 'C' From Products a Order By a.ProductId Asc
-
==============================
5.여기에 저장 프로 시저를 사용 : http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables
여기에 저장 프로 시저를 사용 : http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables
또한 주석을 확인합니다.
from https://stackoverflow.com/questions/312861/pivot-using-sql-server-2000 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의 날짜 범위를 중복 찾기 (0) | 2020.04.08 |
---|---|
[SQL] 2008 SQL Server의 SS : 00 : MM : 어떻게 HH의 정수 (시간)을 변환하는? (0) | 2020.04.08 |
[SQL] 하나의 문 내에서의 MySQL의 자동 증가 값에 액세스 할 수 있습니까? (0) | 2020.04.07 |
[SQL] 하나의 레코드에 대한 제약은 기본값으로 표시 (0) | 2020.04.07 |
[SQL] case 문 및 DECODE 동등한 있습니까? (0) | 2020.04.07 |