考虑一个包含三个行的名称的数据库表:
Peter
Paul
Mary
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将其转换为单个字符串Peter, Paul, Mary?
为了说明,假设我有两个表如下:
VehicleID Name
1 Chuck
2 Larry
LocationID VehicleID City
1 1 New York
2 1 Seattle
3 1 Vancouver
4 2 Los Angeles
5 2 Houston
Run Code Online (Sandbox Code Playgroud)
我想写一个查询来返回以下结果:
VehicleID Name Locations
1 Chuck New York, Seattle, Vancouver
2 Larry Los Angeles, Houston
Run Code Online (Sandbox Code Playgroud)
我知道这可以使用服务器端游标完成,即:
DECLARE @VehicleID int
DECLARE @VehicleName varchar(100)
DECLARE @LocationCity varchar(100)
DECLARE @Locations varchar(4000)
DECLARE @Results TABLE
(
VehicleID int
Name varchar(100)
Locations varchar(4000)
)
DECLARE VehiclesCursor CURSOR FOR
SELECT
[VehicleID]
, [Name]
FROM [Vehicles]
OPEN VehiclesCursor
FETCH NEXT …Run Code Online (Sandbox Code Playgroud) 我有3个表叫:
我想在GUI上显示所有资源名称的表.在每行的一个单元格中,我想列出该资源的所有应用程序(以逗号分隔).
所以问题是,在SQL中执行此操作的最佳方法是什么,因为我需要获取所有资源,而且还需要获取每个资源的所有应用程序?
我是否首先从资源运行select*然后遍历每个资源并对每个资源执行单独的查询以获取该资源的应用程序列表?
有没有办法在一个查询中执行此操作?
假设我们有一个像这样的简单查询:
SELECT x
FROM t
WHERE t.y = z
Run Code Online (Sandbox Code Playgroud)
如果我们在结果集中有一条记录,我想将变量@v设置为该值.如果我们有两个或更多记录,我希望结果用逗号和空格分隔.编写此T-SQL代码的最佳方法是什么?
例:
结果集1条记录:
Value1
Run Code Online (Sandbox Code Playgroud)
结果集2条记录:
Value1, Value2
Run Code Online (Sandbox Code Playgroud)
结果集3条记录:
Value1, Value2, Value3
Run Code Online (Sandbox Code Playgroud) 如何将多行连接成一个字符串?
查询:
SELECT name FROM mytable;
Run Code Online (Sandbox Code Playgroud)
结果:
name
----
kim
lee
park
cho
Run Code Online (Sandbox Code Playgroud)
只是我想要.
name
----
kim,lee,park,cho
Run Code Online (Sandbox Code Playgroud)
不可能?