2011-05-05 4 views
1

나는 (서로 순차적이라는 것 외에는) 서로 관계가없는 테이블에서 세 개의 항목을 가져와 하나의 행에 가져 오려고합니다.또 다른 피벗 테이블 쿼리

그래서 테이블은 다음과 같다

time show 
12PM smallville 
1PM House 
2PM walking dead 

내가 시간을 기준으로 세 가지 항목을 얻는 방법을 알고 있지만 나는 다음과 같이 답을해야합니다 내가 가진

col1  col2  col3 
smallvile House walking dead 

모든 다른 볼 수있는 선택의 여러 열을 사용하여 서로에 일종의 협회를 기반으로, 나는 단지 내가 세 열의 한 행에 표시하도록 선택한 세 가지를 원하는 그러한 협회가 없습니다. 이 질문은 SLQ 서버에 관계하지 엑셀에있는 경우

+0

솔루션은 사용중인 DBMS 내용에 따라 매우 다양합니다. 예를 들어, SQL Server에서 작동하는 것은 MySQL이나 Oracle에서는 작동하지 않습니다. 그리고 Excel 피벗 테이블에 관해서 말하면 위의 해결 방법 중 아무 것도 작동하지 않습니다. 더 많은 정보를 제공해야합니다. –

+0

일반적으로 화장품과 프리젠 테이션은 응용 프로그램 코드에서 훨씬 쉽게 수행됩니다. PHP 나 Python에서는 1-2 라인이 필요합니다. – peufeu

+0

당신은 내가 원하는 것을 달성하기 위해 아래의 답변을 수정할 수 있습니다 :) 해피 코딩 – Japongskie

답변

1

, 다음과 같은 무언가 당신을 위해 무엇을 찾고있는 것 : Pivot Tables에 대한 자세한 참조

Select [12PM],[1PM],[2PM],... 
from (
select time, show from tablename 
) as sourcetable 
PIVOT (
Max(Show) for Time in [12PM],[1PM],[2PM],... 
) as PivotTable 

참조 MSDN.

+0

오. 문제는 "시간 열"전체 일 일정을 포함하는 일정으로 가득 차 있으며 현재 시간을 선택하고 현재 시간 이후에 두 개의 프로그램을 표시해야합니다. 그래서 나는 시간에 선택을 할 수 없다. 죄송합니다, 예, 이것이 MYSQL입니다. 감사! –

+0

또한 시간 정보를 버릴 것입니다. 중요한 것은 쇼 이름뿐입니다. –

0

피벗을 조작하기 위해 ID를 넣으면 코드 아래에 내 샘플이 있습니다. 희망이 도움이됩니다. 이것에

CREATE TABLE #Temp (ID INT IDENTITY NOT NULL, [Time] VARCHAR(20), Show VARCHAR(100)) 

    INSERT INTO #Temp ([Time] , Show) 
    SELECT '12PM', 'smallville' UNION SELECT '1PM', 'House' UNION SELECT '2PM', 'walking dead' 

    SELECT [1], [2], [3] 
     FROM ( 
    SELECT Show, ID FROM #Temp 
    ) As src 
    PIVOT 
     (Max(Show) FOR ID IN ([1], [2], [3])) AS pvt 

enter image description here