我正在尝试将基于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,所以请错误地说太多的解释:)
什么是格式化输出的TSQL语法,以便列值显示为字符串,用逗号分隔.
例如,我的表CARS具有以下内容:
CarID CarName
----------------
1 Porsche
2 Mercedes
3 Ferrari
Run Code Online (Sandbox Code Playgroud)
我如何获得汽车名称: Porsche, Mercedes, Ferrari
我有一个包含以下代码的sql函数:
DECLARE @CodeNameString varchar(100)
SELECT CodeName FROM AccountCodes ORDER BY Sort
Run Code Online (Sandbox Code Playgroud)
我需要将select查询中的所有结果连接到CodeNameString中.
显然,C#代码中的FOREACH循环会这样做,但我如何在SQL中执行此操作?
如果有一个名为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.
我今天在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) 我有一个数据库表,其数据如下所示:
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.是否可以只在一个查询中完成整个作业?请帮助查询示例.谢谢.
有没有办法使用两个表连接多个行行,其中值在ORACLE中用逗号分隔?
例:
IdN Name
---------
1 A
2 B
3 C
Run Code Online (Sandbox Code Playgroud)
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 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查询创建逗号分隔列表?
我正在开发一个Web应用程序.我需要单列选择的SQL查询
select
recordid
from
device
where
accountid in (1,2))
Run Code Online (Sandbox Code Playgroud)
我需要将此结果格式化为逗号分隔的SQL字符串.
我想知道是否可以将子查询结果转换为varchar数据类型中的逗号分隔列表.
例如.如果我有产品表.而且我有产品的外键产品图像表.现在我想列出所有带有select查询的产品,该查询应该有一个列,其中列出了每个产品的productImage表的pk列表.
我正在使用sql server 2005.我们能以任何方式实现上述目标吗?
我在数据库中有一个表,如下所示:
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-server ×7
sql ×6
t-sql ×4
asp-classic ×1
coalesce ×1
derby ×1
nvarchar ×1
oracle ×1
sql-function ×1