2015-02-06 3 views
2

나는 SQL에 꽤 공평하다. 그러나 내가 확신 할 수없는 것이 한 가지있다. 그래서 나는 여기에 다른 queston을 요구하면서 그것을 줄 것이라고 생각했다.SQL 중첩 열이 가능합니까?

나는 "국가"를 각 행으로 반환해야하고 다른 테이블의 평균 백분율을 기록하는 각 국가마다 3 개의 열을 가져야합니다. 괜찮아요, 문제없이 할 수 있어요.

내가 갇혀있는 곳은 매월 3 열을 반복해야한다고 가정 해 봅시다. 그래서, 효과적으로, 달 이름이 포함 된 상위 수준 열에 중첩 된 3 열을 원하는. 필요한 레이아웃은 아래에 나와 있습니다 ("인덱스"란 회사 1/2 열의 비율 계산입니다)

 |   January   | 

국가 | 회사 1 | 회사 2 |

이것도 가능합니까?

+1

SQL Server는 행과 열과 함께 작동하며, 프레젠테이션은 Excel 또는 Reporting Services에서 수행됩니다. –

+1

직접 관리하고 데이터 정규화 및 데이터 모델링이 어떻게 작동해야하는지와 충돌하므로 권장하지 않는 것이 좋습니다. 당신은 그것을 올바르게하고 단지 프리젠 테이션을 바꾸는 것이 훨씬 낫다. –

+0

피드백을 보내 주셔서 감사합니다. 엑셀이나 그 이후의 모든 것을 조작하지 않고 끝내는 것이 바람직합니다.하지만 그것이 유일한 방법 인 것처럼 보입니다! – Donald

답변

2

당신은 예를 들어, 동적 SQL에 이런 종류의 물건을 얻을 수 있습니다

CREATE TABLE #Example (Country varchar(20)) 

DECLARE @sql nvarchar(max) 
DECLARE @prefix nvarchar(100) 
DECLARE @startMonth int=3 
DECLARE @endMonth int=6 

DECLARE @currentMonth [email protected] 

WHILE @currentMonth<@endMonth 
BEGIN 
    SET @prefix='Month'+CAST(@currentMonth AS varchar(10)) 
    SET @sql='ALTER TABLE #Example ADD' 
    +'['[email protected]+'_Company1] varchar(20)' 
    +',['[email protected]+'_Company2] varchar(20)' 
    +',['[email protected]+'_Index] int' 
    EXEC (@sql) 

    SET @sql='...' -- ... SQL to set values into the prefixed columns based upon your criteria 
    EXEC (@sql) 

    SET @[email protected]+1 
END 

select * from #Example -- The result with 3 columns per month 

아마 @currentMonth 값에서 고유의 접두사로 각 각 달에 3 열을 추가합니다 이 기술은 솔루션의 기반을 제공합니까?