다름이 아니라 컬럼이 5개가 있습니다.
A B C D E
30 50 60 40 80
70 20 30 60 50
50 80 90 40 10
출력 값
Max
80
70
90
이렇게 5개의 필드가 있는 테이블에서 필드 별 Max 값만 보여주는 쿼리를 만들려고 합니다.
5개라 case when 하는것도 이상한것 같구여...
어떻게 해야 깔끔하게 나올수 있을까요?
아시는 분 부탁드리겠습니다.
감사합니다.
Comment 6
-
건우아빠
2014.11.05 09:08
-
운동부족
2014.11.05 10:44
일단 row에 대한 식별자가 없어서 rowid 라는 컬럼을 하나 추가해야 할듯 하네요.DROP TABLE testmaxGOcreate table testmax(ROWID INT,A INT,B INT,C INT,D INT,E INT)INSERT INTO testmaxVALUES(1, 30, 50, 60, 40, 80),(2, 70, 20, 30, 60, 50),(3, 50, 80, 90, 40, 10)GOSELECT ROWID, MAX(value) MaxValueFROM(SELECT ROWID, A, B, C, D, EFROM testmax) pUNPIVOT(value FOR ColName IN (A, B, C, D, E))AS unpvtGROUP BY ROWIDORDER BY ROWID -
항해자™
2014.11.08 13:53
create table #test(x int identity(1,1),a int,b int,c int,d int,e int)insert into #test (a,b,c,d,e)select top 100checksum(newid()) % 100, checksum(newid()) % 200, checksum(newid()) % 50, checksum(newid()) % 150, checksum(newid()) % 100from syscolumnsselect x, (select MAX(cResult) from (values (a),(b),(c),(d),(e)) as c (cResult)) as cMaxfrom #test -
항해자™
2014.11.08 14:05
-
운동부족
2014.11.10 14:55
이런 방법이 있었네요. ^^ 하나 배웠습니다. ^^ 감사합니다. ^^
-
처리짱
2014.11.11 10:49
신기한 쿼리네요;
unpivot 으로 행으로 분리한 다음 row 별 max값을 구하시면 될듯..