-4

このようにやっているときに複数の列があるときにクエリで個別の値を選択する方法 エラーが発生しています

 select distinct tempname,rundate from History_Table ORDER BY RunDate DESC

編集::

グリッドビューでこのように表示する必要があります

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

3 に答える 3

2

実行日を1つの文字列に連結したいようです。これは、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 は個別の行を与える

1 つのランデート (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

2 つの別々のクエリが必要なようです。1 つは個別の一時名を取得するためのもので、もう 1 つはランデートを取得するためのものです。現在のクエリは、2 つの異なる組み合わせを正しく返しています。

于 2012-10-26T10:26:15.893 に答える