如何在查詢中選擇一個不同的值,當有當我做這樣我得到一個錯誤多列選擇一個獨特的價值
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
DISTINCT給不同的行
看來你的tempnam需要e與一個rundate(最後,第一等)。這可以通過使用GROUP BY來實現。以下示例將給出帶最後一個Rundate的結果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
但我需要得到與名稱 –
相關的所有分支所以你的查詢有什麼問題?它已經給它。不是嗎? – Prasanna
聽起來像你需要兩個單獨的querys。一個獲得不同的臨時名稱,另一個獲取分類。您目前的查詢正確返回兩者的不同組合。
Prasanna的回答聽起來更像你想要的。如果不知道你想從查詢中找到什麼,很難確定。 –
如果我使用替代查詢我得到錯誤代碼 –
它看起來像你想連接你的運行日期成一個單一的字符串。這可以通過使用SQL服務器的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連接字符串的完整說明包含在另一個答案here,一點點的幫助KM's answer to another question
這是我想我想我會檢查一次,我可以刪除[]? –
刪除括號不會影響查詢,也不會將日期格式從103('dd/MM/yyyy')更改,我只是添加它以使結果更清晰。 – GarethD
但事情是我必須填寫一個標籤和下拉使用此查詢將它的工作? –
你有什麼錯誤? –
我沒有得到一個錯誤,但得到重複的名字 –
DISTINCT在整組列上工作。所以你得到重複的tempname或rundate,但從來沒有整個行的重複。 – Steve