检索唯一名称并基于获取日期

时间:2012-10-30 04:25:15

标签: sql sql-server stored-procedures

我有两个存储过程,如下所示:

Select distinct TempName from History_Table 

Select TempName,RunDate from History_Table  where TempName=@tempname

如何使用单个存储过程获取不同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)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

SQL的结果集必须遵循简单的表格形状。没有简单的方法来获得一个结果,其中有一行,其中一列包含多个值(有一些丑陋的黑客,我不会进入)。

就我而言,最简洁的方法是运行以下查询:

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

然后,无论消费该表的结果是什么,它都应该跟踪它处理的最后TempName值。如果当前行具有相同的 TempName值,则应将RunDate添加到现有下拉列表中。否则,它应为新TempName创建一个新行,并创建一个只有一个RunDate值的下拉列表。