변형 된 열을 행에 unpivot하지 않았습니다. http://sqlfiddle.com/#!4/fc489/6SQL : oracle 11g, 결과 집합을 2 개의 하위 집합으로 분할하여 나란히 표시
지금은
AVGGPA 1 1
COURSEAVG 101.5 101.5
STUDENTNAME Jilly Doe John Doe
어떤 힌트 같은 측면 무언가에 의해 학생 정보면에 표시 할 것 ??
변형 된 열을 행에 unpivot하지 않았습니다. http://sqlfiddle.com/#!4/fc489/6SQL : oracle 11g, 결과 집합을 2 개의 하위 집합으로 분할하여 나란히 표시
지금은
AVGGPA 1 1
COURSEAVG 101.5 101.5
STUDENTNAME Jilly Doe John Doe
어떤 힌트 같은 측면 무언가에 의해 학생 정보면에 표시 할 것 ??
당신이 정말로 단지 당신이 지금까지 무엇을 구축하는 간단한 방법에 대해 고민하는 두 부분 집합이있는 경우는 다음과 같습니다
SELECT labeln,
MAX(CASE WHEN rn = 1 THEN value1 END) AS col1,
MAX(CASE WHEN rn = 2 THEN value1 END) AS col2
FROM (
SELECT * FROM (
SELECT to_char(avg(g1.grade)) AS avgGPa,
to_char(avg(s1.course)) AS courseAVG,
s1.student_name AS studentName,
ROW_NUMBER() OVER (PARTITION BY NULL ORDER BY s1.student_name) AS RN
FROM student s1
JOIN grade g1 ON s1.student_name = g1.student_name
GROUP BY s1.student_name
)
UNPIVOT (value1 FOR labeln IN (avggpa, courseavg, studentname))
)
GROUP BY labeln
ORDER BY labeln;
그것은 기본적으로 수동 피벗이다; row_number()
을 원래 쿼리에 추가 한 다음이를 사용하여 해당 값이 들어갈 열을 결정하고 max()
을 입력하여 공백을 축소합니다. max(case(...))
비트를 복제하고 rn
수표 만 변경하여 더 많은 열을 쉽게 추가 할 수 있습니다. 그러나 결국 몇 개의 컬럼을 사용해야 하는지를 알아야합니다. 또는 과대 평가하고 끝에 공백이 있어야합니다.
이론상 실제 pivot()
을 사용할 수 있지만 미리 값을 알지 못하므로 for
절에 사용할 값이 없습니다. 아마도 XML 접근법을 사용할 수는 있지만 과장 될 수 있습니다. 이것이 실제 사용법에 따라 달라질 수 있습니다.
굉장한 작품 매력적인 방법 ... 어떻게 당신의 대답을 받아 들일 수 있습니까? –
왜 두 개의 하위 집합 - 왜 두 명 이상의 학생이 있습니까? –
각 학생은 별도의 칼럼이 될 것입니다. 그래서 3 명의 학생이 3 개의 칼럼과 1 개의 학생 데이타를 보유하고 3 개의 칼럼은 한 개의 학생 데이타를 보유하고 있습니다. –
Pivot은 여기에서 작동하지만 왜 SQL을 사용하지 않으려 고 노력합니까? SQL로 데이터를 검색하고 응용 프로그램 형식을 지정하고 시각화하십시오. 당신이 정말로 plaintext SQLPlus 결과를 원한다면 ... –