2010-11-25 3 views
0

단일 테이블에서 SQL 쿼리를 실행하면 여기에 데이터가 있습니다 (이 값은 예제 일 뿐이며 오류 열은 10을 초과 할 수 있습니다)SQL 여러 열로 여러 열 값 쿼리 (SQL 2005)

time total Error 

00:16 6 10000(E) 

00:20 4 10000(E) 

00:46 2 10000(E) 

01:01 2 10000(E) 

01:40 2 10000(E) 

02:07 2 10000(E) 

02:52 1 10000(E) 

04:27 2 10000(E) 

04:29 6 10000(E) 

04:32 4 10000(E) 

04:49 2 10000(E) 

04:50 2 10000(E) 

06:18 2 10000(E) 

09:04 1 10000(E) 

10:57 4 10000(E) 

10:58 4 10000(E) 

00:36 1 9401(E) 

00:37 1 9401(E) 

00:57 1 9401(E) 

00:58 1 9401(E) 

01:32 1 9401(E) 

01:33 1 9401(E) 

02:36 2 9401(E) 

03:05 1 9401(E) 

03:06 1 9401(E) 

09:53 2 9401(E) 

12:11 2 9401(E) 

12:12 4 9401(E) 

12:41 1 9401(E) 
내가이 가능하다이

time 10000(E) 9401(E) 
--------------------------- 

00:16 6   0 

00:20 4   0 

00:36 0   1 

00:37 0   1 

00:46 2   0 

00:57 0   1 

00:58 0   1 

01:01 2   0 

01:32 0   1 

01:33 0   1 

01:40 2   0 

02:07 2   0 

02:36 0   2 

02:52 1   0 

03:05 0   1 

03:06 0   1 

04:27 2   0 

04:29 6   0 

04:32 4   0 

04:49 2   0 

04:50 2   0 

06:18 2   0 

09:04 1   0 

09:53 0   1 

10:57 4   0 

10:58 4   0 

12:11 0   2 

12:12 0   4 

12:41 0   1 

처럼 위의 데이터를 취득 할 수 있도록 SQL 쿼리를 작성하려는

?

+0

우리는 당신이 무엇을 요구하고 있는지 이해하려고합니까? 아직 바이너리를 못합니다. = P –

+0

질문을 편집 한 후에도 놀랍게도 명확하지 않습니다 ... –

답변

0

요구 사항을 충족합니까?

select e.time 
     , e.[10000(E)] 
     , e.[9401(E)] 
    from (
     select time 
       , SUM(case when Error LIKE N'10000(E)' then Total else NULL end) as [10000(E)] 
       , null as [9401(E)] 
      from MyTable 
      where Error LIKE N'10000(E)' 
      group by time 
     union 
     select time 
       , null as [10000(E)] 
       , SUM(case when Error LIKE N'9401' then Total else NULL end) as [9401(E)] 
      from MyTable 
      where Error LIKE N'9401(E)' 
      group by time 
    ) e 
order by e.time 

만약 아니라면, 의로운 수정을 가져올 수있는 결과를 알려주십시오.

SUM 함수는 동일한 오류의 발생 횟수를 time으로 주어진 그룹으로 그룹화합니다. 이는 실제로 테이블에있는 것으로 보입니다. 따라서 모든 데이터를 수정해서는 안됩니다. 반면에 동일한 오류에 대해 서로 다른 두 개의 기록이 동시에있는 경우이 값을 time으로 그룹화해야하며이 오류가 총계로 기록됩니다.

0

주어진 입력 및 출력에 대해 이처럼 간단 할 수 있습니다.

SELECT * 
FROM (
      SELECT time 
       , [10000(E)] = Total 
       , [9401(E)] = 0 
      FROM YourTable 
      WHERE Error = '10000(E)' 
      UNION ALL 
      SELECT time 
       , [10000(E)] = 0 
       , [9401(E)] = Total 
      FROM YourTable 
      WHERE Error = '9401(E)' 
     ) q 
ORDER BY 
     time