当我这样做时,如果有多个列,如何在查询中选择一个不同的值我收到错误
select distinct tempname,rundate from History_Table ORDER BY RunDate DESC
EDIT ::
我必须在我的gridview
中显示这样的内容Name Rundate
Test DDL(to show all the rundates)
Test1 rundate
答案 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。您当前的查询正确地返回了两者的不同组合。