2010-11-25 9 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という文字列を指定します。これは実際にテーブルにあるようです。したがって、どのデータも変更すべきではありません。一方、同じエラーの2つの異なるレコードが同じ時間であった場合、それらはこの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