2011-07-21 18 views
1

私はMSアクセスを使用しています。 は、私が唯一のCNOによる最近の日付とグループを表示するSQLクエリを作成したい列MSアクセスクエリ

(CNO (int) , TNO (int), DATE_C). 

を有するテーブルという名前の変更を持っています。しかし、私もTNOを表示したい。

SELECT tno, cno, max(date_c) 
FROM changes 
WHERE [Date_c] In (SELECT [date_c] FROM changes WHERE [date_c]<=[Enter date]) 
GROUP BY cno; 

答えて

0

SQLでこれを行うには7つの方法があります(常に存在しているため)。また、Stackoverflowでよく質問されています。ここでは1です:(私は明確にするため、私はテストすることはできませんのでごdate_c <= [Enter date]パラメータを省略している - 私はAccessインターフェイスを使用していないよ!):

SELECT DISTINCT C1.tno, C1.cno, 
     DT1.c_most_recent_date 
    FROM changes AS C1 
     INNER JOIN (
        SELECT C2.cno, 
          MAX(C2.c_date) AS c_most_recent_date 
        FROM changes AS C2 
        GROUP 
         BY C2.cno 
       ) AS DT1 
      ON C1.cno = DT1.cno; 
     AND C1.c_date = DT1.c_most_recent_date; 

そして、ここでは別です:

SELECT DISTINCT C1.tno, C1.cno, 
     C1.c_date AS c_most_recent_date 
    FROM changes AS C1 
WHERE NOT EXISTS (
        SELECT * 
        FROM changes AS C2 
        WHERE C2.cno = C1.cno 
          AND C1.c_date < C2.c_date 
       ); 
+0

ありがとうございます。それは大きな助けでした:)それは私の問題を解決しました。 – Sunshine

0

これは意味をなさない。 CNOをグループ化している場合は、同じCNOで異なる可能性がある場合は、TNOを表示できません。

SELECT LAST(tno), cno, max(date_c) 
FROM changes 
WHERE [Date_c] In (SELECT [date_c] FROM changes WHERE [date_c]<=[Enter date]) 
GROUP BY cno; 

をしかし、あなたは両方を表示したい場合は、通常、あなたは、両方でグループ化する:

SELECT FIRST(tno), cno, max(date_c) 
FROM changes 
WHERE [Date_c] In (SELECT [date_c] FROM changes WHERE [date_c]<=[Enter date]) 
GROUP BY cno; 

またはこれを:あなたはANY TNOを表示したい場合は、これを行うことができます。 (あなたがしたくないと言ったとしても)。

+0

それは私にとって意味があり、私はどのように説明しようとします: 'customer_ID、customer_name、start_date、end_date '列を持つ顧客の名前の'履歴 'テーブルを、シーケンシングされたキーで考えると、同じ' customer_ID '(customer_ID、customer_name)'(ビジネスルール=以前の名前を再利用することはできません)の通常のキーです。最も最近の名前が有効になった時を見つけるために、 'customer_ID'でグループ化して' MAX(start_date) '*を見つけてテーブルに戻って' start_date'の 'customer_name'を見つけることができます。もちろん、他の方法もあります... – onedaywhen

+0

... 'customer_ID'と' customer_name'でグループ分けするのは、キーであるためこの場合は各行ごとに1つのグループを作成するだけなので、欲しいものではありません。 – onedaywhen

関連する問題