Sql 如何获得按名称分组的值?

Sql 如何获得按名称分组的值?,sql,sql-server,django,django-models,Sql,Sql Server,Django,Django Models,我有一张桌子 id name no 1 alex 12 2 alex 13 3 kale 14 4 kale 15 如何获取按“名称”分组的“否”值, 应返回以下内容 alex - 12,13 kale - 14,15 对于SQL Server: 使用函数实现以下目标: SELECT distinct Name, No = STUFF((SELECT ' , ' + CONVERT(VARCHAR(20),[no]) FROM Table1

我有一张桌子

id name  no
1  alex  12
2  alex  13
3  kale  14
4  kale  15
如何获取按“名称”分组的“否”值, 应返回以下内容

alex - 12,13
kale - 14,15
对于SQL Server:

使用函数实现以下目标:

SELECT distinct Name, No = 
    STUFF((SELECT ' , ' + CONVERT(VARCHAR(20),[no])
           FROM Table1 b 
           WHERE b.Name = a.Name
          FOR XML PATH('')), 1, 2, '')
FROM Table1 a
GROUP BY Name;
输出:

| NAME |       NO |
-------------------
| alex |  12 , 13 |
| kale |  14 , 15 |
看见
您正在使用MySQL/MariaDB吗?如果是,您可以使用以下代码段:

SELECT name, GROUP_CONCAT(no SEPARATOR ', ') FROM your_table GROUP BY name;

其中,GROUP_CONCAT中的no是要合并的列的名称。

您需要创建一个函数来返回列表,使用COALESCE。。。大概是这样的:

create table x (id int,name varchar(10),no varchar(10))
insert into x (id,name,no) values (1,'alex','12')
insert into x (id,name,no) values (2,'alex','13')
insert into x (id,name,no) values (3,'kale','14')
insert into x (id,name,no) values (4,'kale','15')

create function GetList (@name as varchar(10))
returns varchar(100)
as
begin
  declare @List varchar(100) 
  select @List = COALESCE(@List + ', ', '') + no 
  from x 
  where name = @name
  return @List
end

select distinct name,dbo.GetList(name) from x

如果要避免编写SQL,可以在Django中执行以下操作:

In [1]: from my_app.models import MyModel

In [2]: result = {}

In [3]: for o in MyModel.objects.only('name', 'no'):
   ...:     result[o.name] = result.get(o.name, []) + [o.no]
   ...:     

In [4]: result
Out[4]: {u'alex': [12, 13], u'kale': [14, 15]}

你的帖子的标签让人困惑,你是想要一个SQL语句还是如何在Django中实现它?每个名字都只有两行吗?你可以用普通SQL或djangoAshuthosh编写,不,可以是SQL Server或Django中更想要的。我在Django frameworkSorry中使用Django orm,我错过了标签!