ID | A | B | C | D | E | F | G | H | TOTAL |
하나 | 3 | 0 | 3 | 9 | 8 | 3 | 4 | 6 | 36 |
둘 | 56 | 9 | 6 | 6 | 4 | 5 | 3 | 89 | |
셋 | 5 | 65 | 5 | 56 | 3 | 23 | 7 | 7 | 171 |
넷 | 5 | 5 | 56 | 565 | 2 | 6 | 89 | 5 | 733 |
다섯 | 8 | 6 | 5 | 8 | 34 | 7 | 0 | 78 | 146 |
여섯 | 5 | 55 | 6 | 5 | 0 | 89 | 1 | 5 | 166 |
일고 | 5 | 56 | 0 | 6 | 5 | 0 | 4 | 5 | 81 |
여덟 | 6 | 565 | 6 | 56 | 7 | 9 | 6 | 655 | |
아홉 | 5 | 5 | 56 | 4 | 9 | 89 | 76 | 244 | |
열 | 5 | 5 | 7 | 8 | 7 | 9 | 0 | 78 | 119 |
열하나 | 2 | 5 | 7 | 89 | 9 | 32 | 78 | 7 | 229 |
표에 보시는 바와같이 각컬럼들을 더해서 합계를 내는건데요....많지않은 컬럼들이라면 그냥 직접 써서 하면 됐을텐데요...
1000개 넘는 컬럼을 더할려고 하니 로직이 생각이 안납니다..초보이기도하지만.ㅠㅠ
그래서 제가 생각했던건... 컬럼을 INFORMATION_SCHEMA.COLUMNS 스키마를 사용해서 하면 될 것 같다고 생각을 해서
컬럼명들이 열로 만들어지니 이부분을 이용해서 더하면 될 것 같은데....잘몰르겠네요..이것때문에 회사에서 반나절 싸우고 있습니다..ㅠㅠ
이리저리 찾아보고는 있지만 명확한 힌트나 답이 안나와있네요....고수님들 부탁드립니다..(_ _)
Comment 4
-
처리짱
2014.03.10 19:35
-
dcman
2014.03.10 20:43
감사합니다 도움이 많이되었습니다..ㅜㅜ
-
건우아빠
2014.03.10 20:04
컬럼명을 받아 오신다음... 이용하시면 됨...
동적 쿼리로 하셔도 되구요,,,,
with tdata as
(
select '하나' gb, 3 a,0 b,3 c,9 d,8 e,3 f,4 g,6 h union all
select '둘' ,56 ,9 ,6 ,0,6 ,4 ,5 ,3 ) ,res as
(
select gb, isnull(col_gb,'Total') col_gb , sum(col_val) col_val
from tdata
UNPIVOT
(col_val for col_gb in
( a,b,c,d,e,f,g,h )
) as upvt
group by GROUPING SETS (gb, (gb, col_gb))
)select *
from res
pivot
(
sum(col_val)
for col_gb in
( a,b,c,d,e,f,g,h,Total)
) as pvt
-
dcman
2014.03.10 20:46
감사합니다 도움이 많이되었습니다..ㅜㅜ
DECLARE @ret NVARCHAR(100)
DECLARE @sSql NVARCHAR(300)
SELECT @ret = COALESCE(@ret+ '+' +b.name, b.name)
from sysobjects as a,
syscolumns as b
where a.id = b.id
and a.[name] = 'table'
and b.xtype = 56
SET @sSql = 'select ' + @ret + ' '
SET @sSql = @sSql + 'FROM table '
exec(@sSql)