sql - 像这样的sql查询如何进行分组

标签 sql sql-server sql-server-2005

我有这个疑问。

我想通过仅获取 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/

相关文章:

sql-server - 偶发的 SQL 连接超时

sql-server - 从应用于另一个表的条件中找到 ID 的 SQL 表中删除

sql - 从 View 或表中更快地获取数据?

sql - 使用postgresql从多个表中选择相同的字段

mysql - 从子查询中检索多列

sql - 将数据类型 varchar 转换为 float isnumeric = 1 时出错

sql - 如何用匹配调用 regexp_replace 中的函数?

mysql - 无法将我的应用程序连接到Docker Compose网络中的MySql服务

sql - 是否应该为 SQL Server 2005 中的存储过程授予 CONTROL 权限?

SQL 根据 asc 中的订单总数查找 X 城市中包含产品 Y 和订单的商店列表