2017-03-09 5 views
1

は、私は基本的に移調する必要がテーブルを持っている、そして新しいSUMの列には、それ(DaySum)に加えます。あなたは結果テーブルに以下を参照できるよう転置は、すべての行が、(17-01-02から17-01-08に)指定された唯一のものは含まれません。SQL Serverのピボットまたはアンピボット

私はピボットとアンピボットのさまざまなバリエーションを試してきたが、私は混同の列と値を取得します。

これは私が修正しようとしているテーブルです:

Date   User1 User2 User3 
------------------------------------ 
17-01-01  1  0  1 
Week1   0  1  0 
17-01-02  1  0  1 
17-01-03  1  0  1 
17-01-04  1  1  1 
17-01-05  1  0  0 
17-01-06  1  0  0 
17-01-07  1  0  0 
17-01-08  1  1  0 
Week2   3  0  2 

結果は次のようになります。

Name 17-01-02 17-01-03 17-01-04 17-01-05 17-01-06 17-01-07 17-01-08 DaySum Week2 
------------------------------------------------------------------------------------------- 
User1  1   1   1   1   1   1   1  7  3 
User2  0   0   1   0   0   0   1  2  0 
User3  1   1   1   0   0   0   0  3  2 

私は非常に事前にあなたに感謝し、あなたの助けに感謝します。

答えて

1

両方。

あなたは、旋回のためのアンピボットと集約のためのCROSS APPLYを使用することができます。このような

何か:

select 
    username, 
    sum(case when date = '2017-01-01' then val end) [2017-01-01], 
    sum(case when date = '2017-01-02' then val end) [2017-01-02], 
    sum(case when date = '2017-01-03' then val end) [2017-01-03], 
    sum(case when date = '2017-01-04' then val end) [2017-01-04], 
    . . . 
    sum(val) total 
from (
    select t.date, x.username, x.val 
    from your_table t 
    cross apply (
     values ('User1', User1), 
       ('User2', User2), 
       ('User3', User3) 
    ) x (username, val) 
) t 
group by username; 
+0

おかげGurV。あなたの答えはそれをほぼ解決しました。合計列はすべての値を合計し、User1に合計11を与えます。合計は7 –

+0

@OscarDuranする必要があります - それはあまりにも週にデータを追加することだからです。あなたはあなたの要求に合わせてそれを調整することができます – GurV

+0

私はこれにあまり経験はありませんが、いくつかのバリエーションを試しましたが、これまでに合計を得ていません。右の合計が表示されるように、欠落しているものを投稿することはできますか? –

関連する問題