2

注:私はSQL Serverに少し慣れていないので、これは簡単な質問になるはずです。この質問の書式設定に誤りがあったことをお詫びします。

これはSQLServer2008R2です。

2つのテーブルがあります。

  • 表1:DATAキーIDと列がありますPROD_ID, COLLECT_TS

  • 表2:PRODUCTキーPROD_IDと列がありますPROD_NAME

PROD_NAMEクエリに最新のものをすべてリストさせたいCOLLECT_TS

これが私がこれまでに持っているものです:

SELECT MAX(COLLECT_TS), PROD_ID
FROM dbo.SG_DATA
GROUP by PROD_ID

これにより、最新のすべてが正常に返さCOLLECT_TSれますPROD_IDが、これPROD_IDは単なる数値であり、ユーザーにとって何の意味もありません。

よろしくお願いします。

4

3 に答える 3

1
Select max(p.prod_name) as prod_name, max(d.collect_ts) as collect_ts
From product p
Join data d -- left join if you want products with no data
    On d.prod_id = p.prod_id
Group by p.prod_id

製品とデータを結合して、データエントリごとに1つの行を取得し、製品からの追加情報を添付するという考え方です。次に、製品IDでグループ化し、各グループから最大収集数を取得します。最大名も使用しますが、名前はグループ全体で一定であるため、これで問題ありません。したがって、単一の値を選択するには、集計が必要です。

于 2013-02-18T15:15:29.390 に答える
1

2つのテーブルを結合してから、COLLECT_TS列で並べ替える必要があります。

Select TB2.PROD_NAME , TB1.COLLECT_TS  From [Table_1] as TB1
Join [Table_2] as TB2 on TB1.PROD_ID = TB2.TB1.PROD_ID 
Order by TB1.COLLECT_TS desc
于 2013-02-18T15:17:28.350 に答える
0
SELECT MAX(COLLECT_TS), MAX(PROD_NAME)
FROM dbo.SG_DATA a
inner join dbo.PRODUCT b on a.prod_id = b.prod_id
GROUP by PROD_ID
于 2013-02-18T15:16:01.490 に答える