2

注意:我对 SQL Server 有点陌生,所以这应该是一个简单的问题,对于格式化这个问题的错误,我深表歉意。

这是 SQL Server 2008 R2。

我有两张桌子。

  • 表 1:DATA有键ID和列PROD_ID, COLLECT_TS

  • 表2:PRODUCT有keyPROD_ID和columnPROD_NAME

我希望我的查询PROD_NAME按最新列出COLLECT_TS

到目前为止,这是我所拥有的:

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

这成功地返回了所有最新COLLECT_TS的 a PROD_ID,但PROD_ID只是一个数字,对用户没有任何意义。

提前感谢您的回答。

4

3 回答 3

1

您需要连接这两个表,然后按 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 回答
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

这个想法是连接产品和数据,因此我们为每个数据条目获取一行,并附加来自产品的额外信息。然后我们按产品 id 分组,并从每个组中获取最大收集 ts。我们也采用最大名称,但这没关系,因为名称在整个组中是不变的,所以我们只需要一些聚合来选择单个值。

于 2013-02-18T15:15:29.390 回答
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 回答