[英]How to write a sql query to Sort or Group the dataset
我在表A中有數據,如下所示。 我想將memberID分組為一組,並對每組中的Date_Time進行排序,如下面的快照所示
Date_Time PersonID Status
4/2/14 10:15 AM ghi Closed
4/1/14 9:15 AM ghi Cancelled
4/1/14 11:00 AM abc Cancelled
4/2/14 8:12 AM def Closed
4/1/14 9:17 AM def Hold
4/3/14 2:17 PM abc Hold
4/2/14 8:30 AM abc Open
4/3/14 8:16 AM jkl Closed
4/1/14 12:10 PM jkl Open
4/1/14 11:30 AM abc Hold
下面附帶的最后一個示例快照將顯示memberID: ghi第一行日期時間'4/1/2014 9:15:00 AM'大於memberID: def 1st row date_Time'4 / 1/2014 9:17:00 AM'以黃色突出顯示。 這就是memberID ghi將調整設置為第一組然后跟隨memberID def set然后meberID abc , jkl ...等的主要原因 ...
有人可以幫我如何編寫MS-SQL查詢來實現最終結果。
非常感謝你的幫助。
如果我正確理解你的問題,你需要join
使用的表背到自身min
骨料建立排序順序:
select t.*
from yourtable t
join (
select personid,
min(date_time) min_date_time
from yourtable
group by personid
) t2 on t.personid = t2.personid
order by t2.min_date_time, t.date_time
這是另一種方式 :
SELECT
Date_Time,
PersonID,
Status
FROM
dbo.atable
ORDER BY
MIN(Date_Time) OVER (PARTITION BY PersonID),
PersonID,
Date_Time
;
不過,這種方法與sgeddes的答案相同,它只是有不同的語法。 它使用MIN(...) OVER (...)
計算最小Date_Time
值。 這使得對派生表的連接完全沒有必要。
另一個小區別是我已經將PersonID
添加到ORDER BY子句中,以確保具有相同最小Date_Time
值的人不會混淆他們的行。
您是否嘗試在select語句的末尾添加Order By PersonID, Date_Time
?
請注意,如果Date_Time
列是字符串而不是Date
字段,則對Date_Time
列進行排序將無法正常工作。
提供您目前所做工作的代碼示例,以便我們能夠更清楚地了解您的問題,以便我們更有效地幫助您。
SELECT Date_Time,PersonID,[Status]
FROM TABLE1
GROUP BY Date_Time,PersonID,[Status]
ORDER BY PersonID,Date_Time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.