0

次のような myTable というテーブルがあります。

id, myDate, name, group  
1, 2012-04-09, john, subGroup-A  
2, 2012-04-10, marc, subGroup-B

「subGroup」で始まるサブグループについて、maxDate とそれに付随する名前でレコードを取得したいと思います。だから私は次のクエリをやっています:

SELECT max(myDate) AS maxDate, name FROM myTable WHERE group LIKE "subGroup%";

このクエリは次のように返すと思います。

maxDate, name  
2012-04-10, marc

しかし、代わりにこれを返しています:

maxDate, name  
2012-04-10, john

したがって、基本的に maxDate は正しく取得されますが、名前はその日付に対応するものではありません。私は本当にそれを取得しません。誰かが私を理解するのを手伝ってくれることを願っています。返信ありがとうございます。乾杯。マルク

4

2 に答える 2

2

この投稿を参照できます。名前でグループ化するにはSQLクエリが必要ですが、最新のエントリに基づいて他のフィールドを返します 。MSSQLには2つのソリューションがあり、1つはユニバーサルです。

そして主なルール:句に含まれていない、または集計関数を持つSELECT列をリストするために決して含めないでください。GROUP BY

于 2012-04-10T10:51:26.977 に答える
2

クエリは次のとおりです。

 SELECT max(myDate) AS maxDate, name FROM myTable WHERE group LIKE "subGroup%";

以下が必要だと思います。

SELECT MAX(myDate) AS maxDate, name 
FROM  myTable 
GROUP BY NAME 
HAVING group LIKE "subGroup%"

また

SELECT myDate AS maxDate, name 
FROM myTable 
WHERE group LIKE "subGroup%" AND myDate = (SELECT MAX(myDate) FROM myTable)
于 2012-04-10T10:55:28.867 に答える