1

これを聞くのは本当にばかげているように感じますが、SQL Server Compact (CE) ではこの選択を行うことができません

次のような 2 つのテーブルがある場合:

Statuses                      Users
id | status   | thedate        id | name
-------------------------      -----------------------
0  | Single   | 2014-01-01     0  | Lisa
0  | Engaged  | 2014-01-02     1  | John
1  | Single   | 2014-01-03
0  | Divorced | 2014-01-04

ステータス内の各個人の最新のステータスを選択するにはどうすればよいですか? 結果は次のようになります。

Id | Name | Date       | Status
--------------------------------
0  | Lisa | 2014-01-04 | Divorced
1  | John | 2014-01-03 | Single

つまり、日付が最も高い個別の ID を選択し、名前を結合します。おまけとして、最新のレコードが一番上になるようにリストを並べ替えます。

4

2 に答える 2

0

SQL Server CE では、次を使用してこれを行うことができますjoin

select u.id, u.name, s.thedate, s.status
from users u join
     statuses s
     on u.id = s.id join
     (select id, max(thedate) as mtd
      from statuses
      group by id
     ) as maxs
     on s.id = maxs.id and s.thedate = maxs.mtd;

サブクエリは最大日付を計算し、それをテーブルのフィルターとして使用しstatusesます。

于 2014-02-10T11:50:46.237 に答える
0

次のクエリを使用します。

SELECT U.Id AS Id, U.Name AS Name, S.thedate AS Date, S.status AS Status
FROM Statuses S
INNER JOIN Users U on S.id = U.id
WHERE S.thedate IN (
         SELECT MAX(thedate)
         FROM statuses
         GROUP BY id);
于 2014-02-10T11:55:12.093 に答える