0

2012年6月1日以降に販売を行っていないすべての人を検索するSQLクエリを作成しようとしていて、2つのテーブルがあるとします。

UserID    FirstName    LastName
1000      Ted          Ting
1001      Sally        Song
1002      Adam         Apple

UserID   SalesDate
1000     8/1/2012
1000     6/12/2012
1000     6/11/2012
1000     5/3/2012
1001     3/1/2012
1001     5/30/2012
1002     6/15/2012
1002     5/1/2011

このクエリの結果には、次の列が含まれます。

UserID   FirstName   LastName  LastSalesDate
1001     Sally       Song      5/30/2012

これは、日付より前のすべての売上ではなく、Sallyの最新の売上を返すだけであることに注意してください(2012年3月1日の売上は表示されません)。これを取得するための適切なSQLクエリは何ですか?

4

3 に答える 3

1
SELECT t1.UserID, t1.FirstName, t1.LastName, MAX(SalesDate) AS SalesDate
FROM Table1 t1 JOIN Table2 t1 ON t1.UserId = t2.UserID
GROUP BY t1.UserID, t1.FirstName, t1.LastName
HAVING MAX(SalesDate) < '20120601'
于 2012-10-28T03:06:24.107 に答える
0
select t.userid,t.firstname,t.lastname,max(t1.salesdate) as lastsalesdate 
from table1 as t1 
left outer join table2 as t2 on t2.userid = t1.userid 
where t1.userid not in(select t3.userid from table2 where t3.lastsalesdate < '6/1/2012')
group by t2.userid;
于 2012-10-26T04:31:43.493 に答える
0

基本的に、ユーザーIDに基づいてテーブルで内部結合を行うだけです。次に、定義した日付でフィルタリングする場所を使用できます。

select top 1 * from table1 as t1 
  inner join table2 as t2 on t2.userid = t1.userid 
  where t2.lastsalesdate < '6/1/2012' order by t2.lastsalesdate desc;
于 2012-10-26T04:28:04.450 に答える