2012-10-30 29 views
1

我有兩個存儲過程,象下面這樣:檢索唯一的名稱,並且基於獲取日期

Select distinct TempName from History_Table 

Select TempName,RunDate from History_Table where [email protected] 

如何使用一個單一的存儲過程,以獲得一個結果集不同tempname的和他們的相關RunDate

TempName  RunDate      RunBy 

1 test 2012-10-11 00:00:00.000 chandu 
2 testing 2012-12-15 00:00:00.000 kumar 
3 asdsad 2012-08-09 00:00:00.000 asdsad 
4 test 2012-12-12 00:00:00.000 asdasds 
15 test 2012-10-01 00:00:00.000 asdaddf 
15 test 2012-09-12 00:00:00.000 bghgh 

I have to display like 

TempName RunDate     RunBy 
test  dates(in a dropdown)  lastrun name(i.e asdasds) 
+0

究竟你的意思「但我想這樣做在一個商店PROC」。你是否希望返回所有不同的臨時名稱及其相關的運行日期? –

+0

是的,這就是我想要的 – Newbie

+0

所以你不會再使用@tempname變量...? –

回答

1

從你可以嘗試像(SQL Server 2005的+ CTE

;WITH UNames AS (
     Select distinct 
       TempName 
     from History_Table 
) 
Select ht.TempName, 
     ht.RunDate 
from History_Table ht INNER JOIN 
     UNames u ON ht.TempName = u.TempName 
+0

我可以使用這個作爲存儲過程? – Newbie

+0

您可以使用它** IN **存儲過程。 –

+0

但是當我運行這個我得到重複的名字。 – Newbie

0

結果集從SQL註釋必須遵循一個簡單的板狀。有一行,其中一列包含多個值(有一些醜陋的黑客,我不會進入)沒有簡單的方法來獲得結果。

要做到這一點,至今我而言最徹底的方法,是運行以下查詢:

Select TempName,RunDate,RunBy from History_Table ORDER BY TempName,RunDate 

然後,無論是消耗從表中的結果,它應該保持跟蹤最後TempName它處理的值。如果當前行具有相同TempName值,那麼就應該添加RunDate到現有的下拉。否則,它應該創建一個新的行新TempName並創建只有一個RunDate值下拉。

+0

但我需要得到TempName獨特這就是爲什麼我使用兩個存儲過程本。 – Newbie

+0

@Newbie - 但正如我所解釋的,你不能有一個單行包含多個值('RunDate's)列 - 還等什麼我提議爲您返回*多*行,並對其進行處理在消費方,這樣你*顯示*每個'TempName'值單行。這就是爲什麼我添加了'ORDER BY',以便所有與單個'TempName'有關的行都出現在一起。 –