[英]Django custom SQL returning single row of results when query returns 2?
[英]Problem when concat results of query to single row in SQL Server
我的表结构:
| ROLE_ID | PERMISSION_ID |
+---------+---------------+
| 1 | 12 |
| 2 | 12 |
| 2 | 13 |
| 2 | 14 |
| 1 | 13 |
我的查询返回错误
选择列表中的“ USER_ROLE_PERMISSION.PERMISSION_ID”列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
因为PERMISSION_ID不在聚合函数中:
DECLARE @CodeNameString NVARCHAR(MAX)
SET @CodeNameString = NULL
SELECT
@CodeNameString = COALESCE(@CodeNameString + ', ', '') +
CAST(PERMISSION_ID AS VARCHAR)
FROM
USER_ROLE_PERMISSION
GROUP BY
ROLE_ID
SELECT
@CodeNameString, ROLE_ID
FROM
USER_ROLE_PERMISSION
GROUP BY
ROLE_ID
我想要得到这样的结果:
| ROLE_ID | PERMISSION_ID |
+---------+---------------+
| 1 | 12,13 |
| 2 | 12,13,14 |
我需要根据其ROLE_ID
PERMISSION_ID
。 但是如您所见, PERMISSION_ID
在聚合函数之外,因此我也需要按PERMISSION_ID
对其进行分组。 如果我只想按ROLE_ID
将其ROLE_ID
?
这不是获得所需内容的最佳方法。 而是使用XML方法进行串联:
select r.role_id,
stuff( (select ',' + convert(varchar(max), permission_id)
from user_role_permission urp
where urp.role_id = r.role_id
for xml path ('')
), 1, 1, ''
) as permissions
from (select distinct role_id from user_role_permission) r;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.