我有这个疑问。
我想通过仅获取 userid 和 albumtemplateid 来对结果进行分组,但是对于 cardtenplateid 列,我想获取该列具有的多个值之一。
Select
UserID,
CardTemplateID,
AlbumTemplateID
from vwCardsPerUser
我不知道我是否说清楚了,但这里有一个例子:
用户 ID 卡模板 ID 专辑模板 ID
1 3 1
2 2 1
1 7 1
3 3 2
所以结果是:
用户 ID 卡模板 ID 专辑模板 ID
1 3 1
2 2 1
3 3 2
最佳答案
由于您没有指定要返回哪个“众多”cardtemplateid
值中的一个,因此我任意选择了最小值。
SELECT userid, albumtemplateid, MIN(cardtemplateid)
FROM vwCardsPerUser
GROUP BY userid, albumtemplateid;
编辑根据评论中的问题,这处理了cardtemplateid是uniqueidentifier数据类型的情况:
WITH cteCards AS (
SELECT userid, albumtemplateid, cardtemplateid,
ROW_NUMBER() OVER(PARTITION BY userid, albumtemplateid ORDER BY cardtemplateid) AS RowNum
FROM vwCardsPerUser
)
SELECT userid, albumtemplateid, cardtemplateid
FROM cteCards
WHERE RowNum = 1;
关于sql - 像这样的sql查询如何进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893502/