相关疑难解决方法(0)

在Microsoft SQL Server 2005中模拟group_concat MySQL函数?

我正在尝试将基于MySQL的应用程序迁移到Microsoft SQL Server 2005(不是选择,而是生活).

在原始应用程序中,我们几乎完全使用符合ANSI-SQL的语句,但有一个重要的例外 - 我们group_concat经常使用MySQL的函数.

group_concat顺便说一下,这样做:给出一张表,比如说,员工姓名和项目......

SELECT empName, projID FROM project_members;
Run Code Online (Sandbox Code Playgroud)

收益:

ANDY   |  A100
ANDY   |  B391
ANDY   |  X010
TOM    |  A100
TOM    |  A510
Run Code Online (Sandbox Code Playgroud)

...这是你用group_concat得到的:

SELECT 
    empName, group_concat(projID SEPARATOR ' / ') 
FROM 
    project_members 
GROUP BY 
    empName;
Run Code Online (Sandbox Code Playgroud)

收益:

ANDY   |  A100 / B391 / X010
TOM    |  A100 / A510
Run Code Online (Sandbox Code Playgroud)

所以我想知道的是:是否有可能在SQL Server中编写用户定义的函数来模拟其功能group_concat

我几乎没有使用UDF,存储过程或类似的东西的经验,只是直接的SQL,所以请错误地说太多的解释:)

sql sql-server sql-server-2005 string-aggregation

342
推荐指数
9
解决办法
17万
查看次数

将列值连接到逗号分隔列表中

什么是格式化输出的TSQL语法,以便列值显示为字符串,用逗号分隔.

例如,我的表CARS具有以下内容:

CarID    CarName  
----------------
    1    Porsche  
    2    Mercedes  
    3    Ferrari  
Run Code Online (Sandbox Code Playgroud)

我如何获得汽车名称: Porsche, Mercedes, Ferrari

t-sql sql-server

58
推荐指数
8
解决办法
12万
查看次数

SQL查询 - 将结果连接成一个字符串

我有一个包含以下代码的sql函数:

DECLARE @CodeNameString varchar(100)

SELECT CodeName FROM AccountCodes ORDER BY Sort
Run Code Online (Sandbox Code Playgroud)

我需要将select查询中的所有结果连接到CodeNameString中.

显然,C#代码中的FOREACH循环会这样做,但我如何在SQL中执行此操作?

sql t-sql sql-server sql-function

36
推荐指数
4
解决办法
15万
查看次数

SQL Server中的SQL group_concat函数

如果有一个名为employee的表

EmpID           EmpName
----------      -------------
1               Mary
1               John
1               Sam
2               Alaina
2               Edward
Run Code Online (Sandbox Code Playgroud)

结果我需要这种格式:

EmpID           EmpName
----------      -------------
1               Mary, John, Sam
2               Alaina, Edward
Run Code Online (Sandbox Code Playgroud)

问:这条记录在同Employee一张表中.我几乎没有使用UDF,存储过程的经验,我需要通过查询完成这个事情.这可能不使用UDF,SP.

asp-classic sql-server-2008

22
推荐指数
2
解决办法
3万
查看次数

nvarchar concatenation/index/nvarchar(max)莫名其妙的行为

我今天在SQL Server(2008R2和2012)中遇到了一个非常奇怪的问题.我正在尝试使用串联和select语句来构建字符串.

我找到了解决方法,但我真的很想了解这里发生了什么以及为什么它没有给我预期的结果.有人可以向我解释一下吗?

http://sqlfiddle.com/#!6/7438a/1

根据要求,这里的代码也是:

-- base table
create table bla (
    [id] int identity(1,1) primary key,
    [priority] int,
    [msg] nvarchar(max),
    [autofix] bit
)

-- table without primary key on id column
create table bla2 (
    [id] int identity(1,1),
    [priority] int,
    [msg] nvarchar(max),
    [autofix] bit
)

-- table with nvarchar(1000) instead of max
create table bla3 (
    [id] int identity(1,1) primary key,
    [priority] int,
    [msg] nvarchar(1000),
    [autofix] bit
)

-- fill the three tables with the same values …
Run Code Online (Sandbox Code Playgroud)

sql-server nvarchar string-concatenation sql-server-2012

12
推荐指数
1
解决办法
4765
查看次数

Sql选择查询帮助

我有一个数据库表,其数据如下所示:

Primary key | Column1       | Column2          | col3 | col4 |col5
---------------------------------------------------------------------

1           | Chicago Bulls | Michael Jordan   | 6'6  | aaaa | cccc

2           | Chicago Bulls | Scottie Pippen   | 6'8  | zzzz | 345

3           | Utah Jazz     | Malone           | 6'9  | vvvv | xcxc

4           | Orlando Magic | Hardaway         | 6'7  | xnnn | sdsd
Run Code Online (Sandbox Code Playgroud)

我想编写一个查询,它将获取Column1中的所有不同值,并在Column2中为每个Column1值附加值.例如:查询应该返回

**Chicago Bulls | Michael Jordan, Scottie Pippen**

**Utah Jazz     | Malone**

**Orlando Magic | Hardaway**
Run Code Online (Sandbox Code Playgroud)

我可以编写一个查询来获取column1中的所有不同值,然后迭代每个不同的值以在一些操作之后获得附加的列2.是否可以只在一个查询中完成整个作业?请帮助查询示例.谢谢.

sql derby

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

在ORACLE中,是否有一种方法可以使用两个表将多行行连接成一个行,其中最终值用逗号分隔?

有没有办法使用两个表连接多个行行,其中值在ORACLE中用逗号分隔?

例:

表格1

IdN Name 
---------
1   A 
2   B 
3   C 
Run Code Online (Sandbox Code Playgroud)

表2

IdC Car
------------
1    Ferrari
1    BMW
2    SEAT
2    FIAT
3    FORD
Run Code Online (Sandbox Code Playgroud)

结果如下:

A    Ferrari,BMW
B    SEAT,FIAT
C    FORD
Run Code Online (Sandbox Code Playgroud)

我想知道是否有这样的事情:

SELECT NAME,CAR
FROM TABLE1, TABLE2
where TABLE1.IdN=TABLE2.IdC
Run Code Online (Sandbox Code Playgroud)

这返回类似于:

法拉利
宝马
B座椅
B菲亚特
福特

有一种简单的方法可以用逗号分隔值"连接"到一行吗?

sql oracle

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

SQL - 使用Group By时逗号分隔数据

我正在使用SQL Server和TSQL:

我想要做的是在另一列上使用group by时在一列上使用逗号分隔值.见下面的数据示例.

col1 --- col2

1121     abc
1123     aee
1335     afg
1121     def
1121     abc

我想在"col1"上分组并计算记录数,但如果数据不同,我还想在col2上连接.例如,使用值"1121"作为参考,请参阅下面的数据输出.

qty --- col1 --- col2

3       1121     abc, def
1       1123     aee
1       1335     afg

我想过可能使用COALESCE,但我不确定如何在另一列上使用group by时实现它.

任何帮助将不胜感激.

sql t-sql concatenation coalesce

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

是否可以将SQL单列结果作为逗号分隔的字符串?

可能重复:
如何使用SQL查询创建逗号分隔列表?

我正在开发一个Web应用程序.我需要单列选择的SQL查询

select 
  recordid 
from 
  device 
where 
  accountid in (1,2)) 
Run Code Online (Sandbox Code Playgroud)

我需要将此结果格式化为逗号分隔的SQL字符串.

t-sql sql-server sql-server-2005

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

将sql子查询转换为list或varchar

我想知道是否可以将子查询结果转换为varchar数据类型中的逗号分隔列表.

例如.如果我有产品表.而且我有产品的外键产品图像表.现在我想列出所有带有select查询的产品,该查询应该有一个列,其中列出了每个产品的productImage表的pk列表.

我正在使用sql server 2005.我们能以任何方式实现上述目标吗?

sql-server sql-server-2005

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

SQL Server 将特定列值转换为逗号分隔的字符串

我在数据库中有一个表,如下所示:

Id  Name
1   Item1
1   Item2
2   Item3
1   Item4
3   Item5
Run Code Online (Sandbox Code Playgroud)

我需要如下输出(第三列是计数):

1   Item1,Item2,Item4   3
2   Item3               1
3   Item5               1
Run Code Online (Sandbox Code Playgroud)

它是如何通过 SQL Query 实现的?

sql sql-server string-aggregation

0
推荐指数
2
解决办法
9392
查看次数