标签: sql-server-group-concat


如何在sql server中使用group_concat进行查询

我知道在sql server中我们不能使用Group_concat函数但是这里有一个问题,我需要Group_Concat我的查询.我谷歌它发现了一些逻辑,但无法纠正它.我的SQL查询是

select  m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid 
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;
Run Code Online (Sandbox Code Playgroud)

它给我的结果如

在此输入图像描述

只看前三行在那个maskid,maskname,schoolid,schoolname是相同的但是maskdetail是不同的,所以想要一行,其中最后一列可以包含所有maskdetails,如maskid等等.

我希望我的输出像

在此输入图像描述

等等.请在查询时帮助我.

提前致谢.

sql-server string-aggregation sql-server-group-concat

104
推荐指数
4
解决办法
18万
查看次数

多行到一个以逗号分隔的值

我想在SQL Server中创建一个表值函数,我想以逗号分隔值返回数据.

例如表格: tbl

ID | Value
---+-------
 1 | 100
 1 | 200
 1 | 300     
 1 | 400 
Run Code Online (Sandbox Code Playgroud)

现在,当我使用该函数执行查询时 Func1(value)

SELECT Func1(Value) 
FROM tbl 
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)

我想要的输出是: 100,200,300,400

sql sql-server sql-server-group-concat

83
推荐指数
1
解决办法
29万
查看次数

SQL,如何连接结果?

我目前有一个返回许多字段的SQL查询.我需要一个字段实际上是一个子查询子.

问题详细:

如果我有一个包含两列的表X,ModuleID并说ModuleValue,我如何编写SQL查询来获取结果并将其连接到一个字段:

EG结果返回

 (SELECT ModuleValue FROM Table_X WHERE ModuleID=@ModuleID)
Run Code Online (Sandbox Code Playgroud)

价值1

价值2

价值3

...

我需要返回结果(作为单行,与上面不同):

值1,值2,值3

是否有一个简单的连接方法可以是用户?

编辑:

DB是MS TSQL(2005)

sql sql-server sql-server-2005 concatenation sql-server-group-concat

32
推荐指数
7
解决办法
9万
查看次数

如何连接每个组的特定列的所有字符串

假设我有这个表[表1]

Name    Mark
------- ------
ABC     10
DEF     10
GHI     10
JKL     20
MNO     20
PQR     30
Run Code Online (Sandbox Code Playgroud)

我的SQL语句应该是什么来检索看起来像这样的记录:( group by [mark]).我已经完成了1和2列,但不知道如何完成第3列(使用相同的[mark]连接[name])

mark count     names
---- -----     -----------
10       3     ABC,DEF,GHI
20       2     JKL,MNO
30       1     PQR
Run Code Online (Sandbox Code Playgroud)

我正在使用Microsoft SQL.请帮忙.谢谢

sql t-sql sql-server xquery sql-server-group-concat

21
推荐指数
1
解决办法
4万
查看次数

SQL查询在SQL Server中以逗号分隔符的形式获取聚合结果

我需要在表上编写一个sql查询,以便结果将具有group by列以及带有逗号分隔符的聚合列.

我的表格将采用以下格式

   |`````````|````````|
   |    ID   |  Value |
   |_________|________|
   |    1    |   a    |
   |_________|________|
   |    1    |   b    |
   |_________|________|
   |    2    |   c    |
   |_________|________|
Run Code Online (Sandbox Code Playgroud)

预期结果应采用以下格式

   |`````````|````````|
   |    ID   |  Value |
   |_________|________|
   |    1    |  a,b   |
   |_________|________|
   |    2    |   c    |
   |_________|________|
Run Code Online (Sandbox Code Playgroud)

sql sql-server select aggregate-functions sql-server-group-concat

19
推荐指数
1
解决办法
6485
查看次数

带逗号分隔的SQL逗号分隔行

我有以下查询:

SELECT
  Account,
  Unit,
  SUM(state_fee),
  Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit
Run Code Online (Sandbox Code Playgroud)

这当然会引发异常,因为代码不在group by条款中.每个state_fee都有一个代码.如何将此代码显示在1条记录中(每个state_fee 1个代码,即每个单元的多个state_fee)作为逗号分隔列表?我在这里查看了不同的解决方案,但我找不到任何有用的解决方案group by.

sql sql-server sql-server-2005 aggregate-functions sql-server-group-concat

14
推荐指数
1
解决办法
3万
查看次数

string按功能与其他聚合函数串联连接

是否可以通过函数(如sum,avg,count等)将字符串与一个或多个其他组连接起来.

说我有下表

Id Name Order Value  
1  a    1     100  
2  b    2     200  
3  c    1     300  
4  d    1     100  
5  e    2     300
Run Code Online (Sandbox Code Playgroud)

现在,如果我希望结果是这种类型的东西

Order Name   Value Count  
1     a,c,d  500   3  
2     b,e    500   2  
Run Code Online (Sandbox Code Playgroud)

如何在SQL服务器上使用查询来实现相同的功能.

sql t-sql sql-server aggregate-functions sql-server-group-concat

7
推荐指数
1
解决办法
2万
查看次数

如何在连接多个表时使用GROUP BY连接字符串?

我正在加入多个表,我希望根据以下内容将一个列值放入行中TechnicianName:

  • 我有4个表easy_tbljobcard,easy_tbltechnicianeasy_tblproblemeasy_tbltechnicianMaster

  • 我得到TechnicianName第2列从easy_tbltechnicianMaster 哪里technicianId存在easy_tbltechnician

  • 我想STUFF在我的查询中的第3列(p.ProblemReported)

当前的SQL语句:

 SELECT j.CardID, 
      , (SELECT TechnicianName FROM easy_tbltechnicianMaster WHERE TechnicianID = t.technicianID) AS TechnicianName
      , p.ProblemReported 
 FROM easy_tbljobcard AS j 
 JOIN easy_technician AS t ON t.CardID = j.CardID  
 LEFT JOIN easy_tblproblem AS p ON p.CardID = t.CardID
Run Code Online (Sandbox Code Playgroud)

查询结果:

???????????????????????????????????????????????????
?  CardID  ?  TechnicianName  ?  ProblemReported  ?
???????????????????????????????????????????????????
?    1     ?      AKBAR       ?     PROBLEM A     ?
? …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008 sql-server-group-concat

5
推荐指数
1
解决办法
6989
查看次数

如何执行存储在表列MySQL中的查询?

mysql> select * from CT;

| CID | MID | REPORT_QUERY           |
|   1 |   1 | select * from emp;     |
|   2 |   2 | select * from student; |

2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

我想在REPORT_QUERY列中执行查询.

DELIMITER //
 CREATE PROCEDURE TRYct()
   BEGIN
SET @str=(SELECT GROUP_CONCAT(REPORT_QUERY SEPARATOR ' ') FROM CT);
PREPARE q from @str;
EXECUTE q;
   END //
 DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

我使用此代码,但如果我的表中只有一个查询,它可以工作.如果有两个查询而不是它给出错误.

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures group-concat sql-server-group-concat

4
推荐指数
2
解决办法
2945
查看次数