[英]SQL Row Order based on Columns
我正在嘗試在查詢中基於THREADPK1和Date列實現一個訂單列。
示例結果(末尾的所需列稱為date_position:
ThreadSourceKey CourseNumber Date ReadCount Date Position
1518055 0701117023LFC 2016-08-24 18 1
1522610 0701117023LFC 2016-08-24 2 1
5443433 0701117023LFC 2016-08-25 1 1
5443433 0701117023LFC 2016-08-27 1 2
5443344 0701117023LFC 2016-08-21 1 1
5443344 0701117023LFC 2016-08-20 1 2
這是我的疑問:有興趣知道如何合並日期位置的排序。
SELECT DISTINCT rs.threadsourcekey,
dc.coursenumber,
CONVERT (DATE, rs.modifieddate, 103) AS 'Date',
Sum(rs.recentreadcount) AS ReadCount
FROM customfinal.rsreportingfactforumreadcounts rs
INNER JOIN #threads threads
ON rs.threadsourcekey = threads.threadsourcekey
INNER JOIN final.dimcourse dc
ON rs.coursekey = dc.coursekey
WHERE rs.coursekey = @CourseKey
AND rs.modifieddate >= Dateadd(day, -7, @DefaultDate)
AND rs.usersourcekey >- 1
AND rs.recentreadcount <> 0
GROUP BY rs.threadsourcekey,
dc.coursenumber,
CONVERT (DATE, rs.modifieddate, 103)
select
ThreadSourceKey,
CourseNumber,
[Date],
ReadCount,
Date_Position = row_number() over (partition by ThreadSourceKey order by [Date])
from
(your sql statement) a
假設您的查詢工作正常,添加ROW_NUMBER()
可以得到您想要的。
請注意,由於GROUP BY
具有CONVERT (DATE, rs.modifieddate, 103)
您需要使用它來進行分區。
SELECT DISTINCT rs.threadsourcekey,
dc.coursenumber,
CONVERT (DATE, rs.modifieddate, 103) AS 'Date',
Sum(rs.recentreadcount) AS ReadCount,
ROW_NUMBER() OVER (partition by rs.threadsourcekey order by CONVERT (DATE, rs.modifieddate, 103)) AS [DATE POSITION]
FROM customfinal.rsreportingfactforumreadcounts rs
INNER JOIN #threads threads
ON rs.threadsourcekey = threads.threadsourcekey
INNER JOIN final.dimcourse dc
ON rs.coursekey = dc.coursekey
WHERE rs.coursekey = @CourseKey
AND rs.modifieddate >= Dateadd(day, -7, @DefaultDate)
AND rs.usersourcekey >- 1
AND rs.recentreadcount <> 0
GROUP BY rs.threadsourcekey,
dc.coursenumber,
CONVERT (DATE, rs.modifieddate, 103)
如果你想選擇它並看看它是如何工作的,這是一個片段。
SELECT threadsourcekey,
ModDate AS 'Date',
Sum(ReadCount) AS ReadCount ,
ROW_NUMBER() OVER (partition by threadsourcekey order by ModDate) AS [DATE POSITION]
FROM
( VALUES
(1518055, '2016-08-24', 1),
(1518055, '2016-08-24', 1),
(1518055, '2016-08-24', 1),
(1522610, '2016-08-24', 1),
(1522610, '2016-08-24', 1),
(5443433, '2016-08-25', 1),
(5443433, '2016-08-27', 1),
(5443344, '2016-08-21', 1),
(5443344, '2016-08-20', 1)
) As Tbl (ThreadSourceKey, ModDate, ReadCount)
GROUP BY threadsourcekey,
ModDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.