예
SELECT t.column1,
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2010) AS "2010",
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2011) AS "2011",
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2012) AS "2012"
FROM (
SELECT DISTINCT column1 FROM table1
) t
ORDER BY t.column1
주, 나는 SUM()
집계 함수 주위 colum3
경우에 당신이 column1, column2
당 중복 값을 가질 수 추가했습니다. 사용중인 데이터베이스에 따라
다음 해당 쿼리는 약간 더 빠를 수 있습니다 당신은 다른 사람으로합니다 (PIVOT
절을 사용하여,보다 간결한 방법으로 동일하게 달성 할 수
SELECT t.column1,
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2010) AS "2010",
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2011) AS "2011",
(SELECT SUM(column3) FROM table1
WHERE column1 = t.column1 AND column2 = 2012) AS "2012"
FROM table1 t
GROUP BY t.column1
ORDER BY t.column1
주 제안했다).
SELECT column1, "2010", "2011", "2012"
FROM table1
PIVOT (SUM(column3) FOR column2 IN (2010, 2011, 2012))
어떤 경우에, 나는 테이블 식 당 컬럼의 동적 번호를 가능하게하는 모든 데이터베이스를 모르는, XML 또는 다른 수단을 포함하는 트릭에 의존하지 않고 : 오라클 11g,이 번역 할 것 동적 SQL. 일반적으로, 그 트릭은 제가 여기서 제안한 것보다 훨씬 빠릅니다.
: 이것은 당신이 항상 당신의 쿼리 SQL에 따라
예를 들어, SQL은 가능합니다. – JJJ
어떤 DB를 사용합니까? – Kayser