2016-11-21 5 views
0

私はその後、私は1つの列に名前を選択しようとしています。この選択数が

Table1 
Name varchar 
ID int 

Table2 
ID int 
Run_Date datetime 

のように見えるテーブルのカップル、そして2列に日付のカウントを持っています。 1列は先週からの名前ごとにすべての日付になり、2列目は今週からすべての名前になります。結果は私のテーブルが

を行うことによって

Name  This_Week  Last_week 
Name1  3    1 
Name2  1    1 
Name3  1    0 
私は値を個別に取得することができます

ようになり、この

Table1 
Name1 1 
Name2 2 
Name3 3 

Table2 
1 2016-11-21 8:40:23.570 
2 2016-11-21 8:50:23.570 
1 2016-11-21 9:40:23.570 
1 2016-11-21 10:40:23.570 
1 2016-11-16 10:40:23.570 
2 2016-11-16 10:40:23.570 
3 2016-11-21 8:40:23.570 

私の結果のように見えたのであれば、この

のようなもののようになります。

WHERE DATEPART(wk, Run_Date) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE()) 

先週からすべてを取得するために、週の後に-1を追加するだけです。同じテーブルに並べて表示するにはどうすればいいですか?

私はCASE

COUNT(CASE WHEN DATEPART(wk, Run_DATE) = DATEPART(wk, GETDATE()) AND DATEPART(yy, Run_Date) = DATEPART(yy, GETDATE()) THEN 1 ELSE 0 END) AS This_Week 

をやって試してみました。しかし、それだけですべての名前のデータベース内のすべての日付を数えるように見えます。

答えて

3
​​

ELSE 0を取り出してください。

COUNTは、NULLsを無視しますが、ELSE 0は値を割り当てます。それをすべて取り除くことは、それが文のELSEを数えないことを意味するでしょう。

+1

Sigh。私はそれを見たに違いありません。ありがとうマット – maltman

+0

それは私が確信しているカップル自分自身を行って見逃しやすい問題はありません。それを修正するもう1つの方法は、それをSUM(...)に変更し、あなたが持っていた通りにcase文を残すことでした。あなたがDISTINCT ID、日付などを数えたいと思っている場合は、カウントはいいですがSUMの場合はそれを達成できません – Matt