选择一个不同的值

时间:2012-10-26 10:16:09

标签: sql sql-server

当我这样做时,如果有多个列,如何在查询中选择一个不同的值我收到错误

 select distinct tempname,rundate from History_Table ORDER BY RunDate DESC

EDIT ::

我必须在我的gridview

中显示这样的内容
Name   Rundate 
Test   DDL(to show all the rundates)
Test1  rundate

3 个答案:

答案 0 :(得分:2)

DISTINCT提供不同的行

似乎你需要一个rundate的tempname(Last,First等)。这可以通过使用GROUP BY来实现。以下示例将给出结果tempname和last rundate

SELECT tempname,MAX(rundate) AS rundate FROM History_Table GROUP BY tempname

您也可以使用ORDER BY。

SELECT tempname,rundate
FROM
(SELECT tempname,MAX(rundate) AS rundate  FROM History_Table GROUP BY tempname) AS SummaryTable
ORDER BY rundate

答案 1 :(得分:2)

看起来您想将运行日期连接成一个字符串。这可以使用sql-server的xml扩展来完成:

SELECT  t1.TempName,
        STUFF(( SELECT  ', [' + CONVERT(VARCHAR, t2.RunDate, 103) + ']'
                FROM    History_Table t2
                WHERE   t1.TempName = t2.TempName
                ORDER BY t2.RunDate
                FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') [RunDates]
FROM    (   SELECT  DISTINCT TempName
            FROM    History_Table 
        ) t1

<强> Example SQL Fiddle

关于如何使用XML来连接字符串的完整说明包含在另一个答案here中,并在KM's answer to another question

的帮助下提供了一些帮助

答案 2 :(得分:0)

听起来你需要两个单独的查询。一个获得不同的临时名称,另一个获得rundates。您当前的查询正确地返回了两者的不同组合。