2017-11-10 7 views
0

私はさらに結果セットを詳述するためにクエリを細分化しようとしています。 私はテーブルを持っていますLogenter image description here特定の数を持つレコードを選択する

私は毎朝このスクリプトを実行します。

管理に(笑)めちゃくちゃにされた人の視覚化を与えるので、これは、クエリからの結果である
SELECT [90DayTally] = COUNT(AssociateName) 
, AssociateName 
, Supervisor 
FROM [DailyAttendance].[dbo].[Log] 
Where EventDate >= dateadd(day, datediff(day, 0, getdate()), -90) 
group by AssociateName, Supervisor 
having COUNT(associatename)>4 
Order By [90DayTally] Desc 

90DayTally AssociateName  Supervisor 
7   Carlos Silva  Karla Vivas 
6   Luz Carmen Garcia Cynthia Perez 
5   Daniel Lockington Damian Vasquez 

また、これらの列数が正確に何であるかを上層部に示したいと思います。私は今

select * 
FROM [DailyAttendance].[dbo].[Log] 
Where EventDate >= dateadd(day, datediff(day, 0, getdate()), -90) 
and AssociateName in ('Carlos Silva', 'Luz Carmen Garcia', 'Daniel Lockington') 
order by AssociateName Asc 

これは、これらの結果を示す取り組んでいるが、私は毎朝これを行うとアウトに変更することが午前私が見ると、私はこれをacheiveするが午前初歩的な方法にしたいものの一例を示す午前以下 AssociateName非常に面倒です。

enter image description here

私はサブクエリを試してみましたが、どうやら私は、where句の下に各AssociateNameを入力しなくても、これをacheiveすることができます方法はありincorrectly.Is?

答えて

1

既存のクエリをサブクエリとして使用し、IN句のハードコード値を置き換えることができます。多分このような

何か: - 私が試していたものに近い

select * 
FROM [DailyAttendance].[dbo].[Log] 
Where EventDate >= dateadd(day, datediff(day, 0, getdate()), -90) and AssociateName in (
SELECT AssociateName FROM (
SELECT [90DayTally] = COUNT(AssociateName), AssociateName, Supervisor 
FROM [DailyAttendance].[dbo].[Log] 
Where EventDate >= dateadd(day, datediff(day, 0, getdate()), -90) 
group by AssociateName, Supervisor 
having COUNT(associatename)>4 
) AS DATA 
) order by AssociateName Asc 
+0

。これは、サブオーダーから 'order by'節を削除するだけで動作します。ありがとう – DRUIDRUID

関連する問題