注意:我对SQL Server有点新,所以这应该是一个简单的问题,我为格式化这个问题时的错误道歉。
这是SQL Server 2008 R2。
我有两张桌子。
表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
只是一个数字,对用户没有任何意义。
提前感谢您的回答。
答案 0 :(得分: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。我们也采用最大名称,但这没关系,因为名称在整个组中是不变的,所以我们只需要一些聚合来选择单个值。
答案 1 :(得分: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
答案 2 :(得分: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