我一直在尝试更新我们在 Gaming SE 网站上使用的 DataExplorer 上的查询,以跟踪没有摘录的标签,以便在结果中包含增量行号,以便更轻松地读取返回的值。这里有很多问题讨论如何做到这一点,例如这个和这个似乎对这些用户有用,但我似乎无法让它适用于我的情况。
为了清楚起见,我想要这样的东西:
RowId | TagName | Count | Easy List Formatting
----------------------------------------------
1 | Tag1 | 6 | 1. [tag:tag1] (6)
2 | Tag2 | 6 | 1. [tag:tag2] (6)
3 | Tag3 | 5 | 1. [tag:tag3] (5)
4 | Tag4 | 5 | 1. [tag:tag4] (5)
到目前为止,我想出的是:
SELECT ROW_NUMBER() OVER(PARTITION BY TagInfo.[Count] ORDER BY TagInfo.TagName ASC) AS RowId, *
FROM
(
SELECT
TagName,
[Count],
concat('1. [tag:',concat(TagName,concat('] (', concat([Count],')')))) AS [Easy List Formatting]
FROM Tags
LEFT JOIN Posts pe on pe.Id = Tags.ExcerptPostId
LEFT JOIN TagSynonyms on SourceTagName = Tags.TagName
WHERE coalesce(len(pe.Body),0) = 0 and ApprovalDate is null
) AS TagInfo
ORDER BY TagInfo.[Count] DESC, TagInfo.TagName
这会产生接近我想要的东西,但不完全是。列RowId
递增,但一旦Count
列更改,它就会重置(可能是因为PARTITION BY
)。但是,如果我删除PARTITION BY
,该RowId
列就会变成随机数。
考虑到表格的结构方式,我想做的事情是否可以实现?如果是这样,SQL 应该是什么?