0

私はテーブルを持っていますMailSummary:

列:

Send(Int), Reply(Int), SRT(Nvarchar(10)), NAME(Nvarchar(10))

|Send| Reply| SRT| Name|
------------------------
| 100|     8|  10|    B|
|  30|     2|  20|    R|
|   5|     0|  30|    S|
-----------------------

テーブルを変換して、次のような新しい結果セットを取得したい:

Sum(Send), Sum(Reply) 

列に名前を表示し、新しい列の下に SRT の値を表示します

|Send| Reply| B | R | S |
-------------------------
| 135|    10| 10| 20| 30|

SQLクエリでそれを行うにはどうすればよいですか?

4

1 に答える 1

1

これはあなたのシナリオではうまくいきます:

SELECT SUM(Send) as Send,
       SUM(Reply) as Reply,
       MIN(CASE WHEN Name = 'B' THEN SRT END) AS B,
       MIN(CASE WHEN Name = 'R' THEN SRT END) AS R,
       MIN(CASE WHEN Name = 'S' THEN SRT END) AS S
FROM   TEST 

ただし、より動的なクエリの場合は、動的クロス集計クエリが必要になります。

フィドルの例: http://sqlfiddle.com/#!3/d0ddc/12

于 2013-06-22T10:28:19.240 に答える