-4

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

 select distinct tempname,rundate from History_Table ORDER BY RunDate DESC

编辑::

我必须在我的gridview中显示这样

Name   Rundate 
Test   DDL(to show all the rundates)
Test1  rundate
4

3 回答 3

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

示例 SQL 小提琴

关于如何使用 XML 连接字符串的完整说明包含在此处的另一个答案中,并在KM 对另一个问题的回答中提供了一点帮助

于 2012-10-26T10:57:52.910 回答
2

DISTINCT 给出不同的行

似乎您需要带有一个运行日期(Last、First 等)的 tempname。这可以通过使用 GROUP BY 来实现。以下示例将给出最后运行日期的结果 tempname

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
于 2012-10-26T10:26:09.907 回答
0

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

于 2012-10-26T10:26:15.893 回答