与我之前的问题相关:如何插入每两个后续行的减法并将其插入新列
我有另一个问题。在下表中;我想计算每个用户最后一次赢得比赛所经过的时间。事实上,我应该从当前日期中减去最后一个中奖日期。(place=1) 表示获胜。
当前表:
http://www.8pic.ir/images/75206897877200828586.jpg
我想要的结果:
http://www.8pic.ir/images/78832309907063712878.jpg
我为这个问题写了以下查询(根据我在这里的上一个问题得到的答案)!但问题是我得到了很多重复的行!我只有 4000 行,但是当我运行这个查询时,我得到了 40,000 行!问题是什么!你能帮帮我吗?而且我对以前没有赢过的用户也有负值。我希望这些字段为 NULL。
;WITH [cte15853354] AS
(
SELECT
[user-name],
[submissions],
[date],
[place],
[recency],
ROW_NUMBER() OVER (ORDER BY [user-name], [date] DESC) AS [ROWNUMBER]
FROM dbo.[top-design1]
)
SELECT
t.[user-name],
t.[submissions],
t.[date],
t.[place],
t.[recency],
DATEDIFF(DAY, ISNULL(k.[date],t.[date]),t.[date]) AS [win-recency]
INTO dbo.[top-design2]
FROM [cte15853354] t
LEFT JOIN [cte15853354] k
ON k.[user-name] = t.[user-name]
where k.[place]=1
ORDER BY t.[user-name], t.[date] DESC