当我这样做时,当有多个列时如何在查询中选择一个不同的值我得到一个错误
select distinct tempname,rundate from History_Table ORDER BY RunDate DESC
编辑::
我必须在我的gridview中显示这样
Name Rundate
Test DDL(to show all the rundates)
Test1 rundate
当我这样做时,当有多个列时如何在查询中选择一个不同的值我得到一个错误
select distinct tempname,rundate from History_Table ORDER BY RunDate DESC
编辑::
我必须在我的gridview中显示这样
Name Rundate
Test DDL(to show all the rundates)
Test1 rundate
看起来您想将运行日期连接成一个字符串。这可以使用 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
关于如何使用 XML 连接字符串的完整说明包含在此处的另一个答案中,并在KM 对另一个问题的回答中提供了一点帮助
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
听起来您需要两个单独的查询。一个获取不同的临时名称,另一个获取运行日期。您当前的查询正确地返回了两者的不同组合。