2013-02-18 54 views
2

注意:我對SQL Server有點新,所以這應該是一個簡單的問題,並且對格式化此問題時出現的錯誤表示歉意。通過時間戳和來自兩個不同表的名稱進行查詢

這是SQL Server 2008 R2。

我有兩個表。

  • 表1:DATA具有關鍵ID和列PROD_ID, COLLECT_TS

  • 表2:PRODUCT已關鍵PROD_ID和列PROD_NAME

我想我的查詢的最新列出每一個PROD_NAMECOLLECT_TS

以下是我迄今:

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

這成功返回所有最新COLLECT_TSPROD_ID,但PROD_ID只是一個數字,並不意味着什麼給用戶。

在此先感謝您的答案。

回答

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進行分組,並從每個組中取最大收集量。我們也採用最大名稱,但沒關係,因爲名稱將在整個組中保持不變,所以我們只需要一些聚合來選擇單個值。

+0

正是我需要的!非常感謝。我知道這很簡單,只需要正確的格式。再次感謝所有幫助! – user1811001 2013-02-18 15:24:35

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 
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 
相關問題