相关疑难解决方法(0)


如何创建SQL Server函数以将子查询中的多行"连接"到单个分隔字段?

为了说明,假设我有两个表如下:

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)

sql sql-server string-concatenation

193
推荐指数
8
解决办法
13万
查看次数

合并多对多关系连接中的列值

我有两个表,BooksAuthors,它们之间通过名为book_authors的第三个表具有多对多关系,我试图使用内部联接列出每本书的作者的所有书籍,以便将它们显示在DataList控件,但是join 导致了几个重复的行,因为每本书可能有很多作者,所以每个作者都会有一行。
例子:

book_title           author  
b1                    a1  
b1                    a2  
Run Code Online (Sandbox Code Playgroud)

解决此问题的最佳方法是什么,使其变为:

book_title                author  
b1                        a1, a2  
Run Code Online (Sandbox Code Playgroud)

sql sql-server asp.net-3.5 sql-server-2008-express

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

在T-SQL中将多个行字段连接成一列

我正在编写一个SQL查询,我需要在表上执行子选择,这通常会返回多行.我需要能够将所有行中某个字段的结果连接到一个字段中才能输出.这有可能,怎么样?

例如,如果SQL查询返回

id | field
1  | test1
2  | test2
3  | test3
Run Code Online (Sandbox Code Playgroud)

我需要输出的字段是"test1 test2 test3".谢谢

sql t-sql asp.net

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

逗号分隔结果多列sql server

我有一个值为表的表:

Key1     Key2     ColumnKey 
============================
1        idx1      here
2        idx2      there
Run Code Online (Sandbox Code Playgroud)

我需要返回,因为逗号分隔了多个列结果.

例:

1,2   idx1,idx2,      here,there
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

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

连接两个表并连接单个字段的多行

查询:

CREATE TABLE #Temp1 (ID int)
CREATE TABLE #Temp2 (ID int, Value varchar(10))

INSERT INTO #Temp1 (ID)
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3

INSERT INTO #Temp2(ID, Value)
SELECT 1,'One-One'
UNION ALL
SELECT 1,'One-Two'
UNION ALL
SELECT 1,'One-One'
UNION ALL
SELECT 2,'Two-One'
UNION ALL
SELECT 2,'Two-Two'
UNION ALL
SELECT 2,'Two-One'

SELECT T1.ID, T2.Value FROM #Temp1 T1 INNER JOIN #Temp2 T2 ON T1.ID = T2.ID

DROP TABLE #Temp1
DROP TABLE #Temp2
Run Code Online (Sandbox Code Playgroud)

电流输出:

ID  Value
1   One-One
1   One-Two …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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