0

私のクエリは、過去 5 週間のデータを取得することです。

select z.week,
sum(case when i.severity=1 then 1 else 0 end) as 1
sum(case when i.severity=2 then 1 else 0 end) as 2
sum(case when i.severity=3 then 1 else 0 end) as 3
sum(case when i.severity=4 then 1 else 0 end) as 4
from instance as i
and left outer join year as z on convert(varchar(10),z.date,101)=convert(varchar(10),i.created,101)
and left outer join year as z on convert(varchar(10),z.date,101)=convert(varchar(10),i.closed,101)
where i.group in '%Teams%'
and z.year=2013
and z.week<=6 and z.week>1

ここでは、インスタンス テーブルに数週間あり、1 行もありません。したがって、ここではnullまたはゼロを取得していません...代わりに、行全体がまったくプロンプト表示されていません。

私の現在のアウトプット。

week | 1 | 2 | 3 | 4 
---------------------
2  | 0 | 1 | 8 | 5
3  | 2 | 3 | 4 | 9
5  | 1 | 0 | 0 | 0

しかし、私は以下のような出力が必要です...

week | 1 | 2 | 3 | 4 
---------------------
2  | 0 | 1 | 8 | 5
3  | 2 | 3 | 4 | 9
4  | 0 | 0 | 0 | 0
5  | 1 | 0 | 0 | 0
6  | 0 | 0 | 0 | 0

目的の出力を取得する方法in sql

4

2 に答える 2

1

これを試して

select z.week,
sum(case when i.severity=1 then 1 else 0 end) as 1
sum(case when i.severity=2 then 1 else 0 end) as 2
sum(case when i.severity=3 then 1 else 0 end) as 3
sum(case when i.severity=4 then 1 else 0 end) as 4
from year as z 
left outer join instance as i  on   
convert(varchar(10),z.date,101)=convert(varchar(10),i.created,101)
and convert(varchar(10),z.date,101)=convert(varchar(10),i.closed,101)
where (i.group is null or i.group in '%Teams%')
and z.year=2013
and z.week<=6 and z.week>1
于 2013-03-08T22:50:40.027 に答える
1

yearに2回エイリアスを付けた場合、クエリがどのように機能するかわかりませんz。しかし、それが問題ではないと仮定すると、 を に変更できLEFT OUTER JOINますRIGHT OUTER JOIN。または、 が気に入らない場合は、句がテーブルを参照するRIGHT OUTER JOINように SELECT を作り直してください。FROMyear

于 2013-03-08T22:51:23.340 に答える