相关疑难解决方法(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万
查看次数

SQL Server:PIVOTing字符串数据的示例

试图找到一些简单的SQL Server PIVOT示例.我发现的大多数例子都涉及计算或总结数字.我只想转动一些字符串数据.例如,我有一个返回以下内容的查询.

Action1 VIEW  
Action1 EDIT  
Action2 VIEW  
Action3 VIEW  
Action3 EDIT  
Run Code Online (Sandbox Code Playgroud)

我想使用PIVOT(如果可能的话)来产生如下结果:

Action1 VIEW EDIT  
Action2 VIEW NULL  
Action3 VIEW EDIT  
Run Code Online (Sandbox Code Playgroud)

PIVOT功能可以实现这一点吗?

t-sql sql-server pivot

123
推荐指数
6
解决办法
19万
查看次数

SQL Server 2005透视未知列数

我正在处理一组类似于以下内容的数据.

StudentName  | AssignmentName |  Grade
---------------------------------------
StudentA     | Assignment 1   | 100
StudentA     | Assignment 2   | 80
StudentA     | Total          | 180
StudentB     | Assignment 1   | 100
StudentB     | Assignment 2   | 80
StudentB     | Assignment 3   | 100
StudentB     | Total          | 280
Run Code Online (Sandbox Code Playgroud)

作业的名称和数量是动态的,我需要将结果与以下内容相似.

Student      | Assignment 1  | Assignment 2  | Assignment 3  | Total
--------------------------------------------------------------------
Student A    | 100           | 80            | null          | 180
Student B    | 100           | 80            | 100           | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server pivot

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

在SQL Server 2008中使用PIVOT

假设我在SQL Server 2008表或[table] -typed变量中有一些数据:

author_id     review_id     question_id     answer_id
88540         99001         1               719
88540         99001         2               720
88540         99001         3               721
88540         99001         4               722
88540         99001         5               723
36414         24336         1               302
36414         24336         2               303
36414         24336         3               304
36414         24336         4               305
36414         24336         5               306
Run Code Online (Sandbox Code Playgroud)

我想检索数据作为结果集,如下所示:

author_id     review_id     1     2     3     4     5
88540         99001         719   720   721   722   723
36414         24336         302   303   304   305   306
Run Code Online (Sandbox Code Playgroud)

我怀疑PIVOT操作符是我需要的(根据这篇文章,无论如何),但我无法弄清楚如何开始,特别是当表中的question_id行数可以变化时.在上面的示例中,它是5,但在另一个查询中,该表可能会填充7个不同的问题.

sql t-sql sql-server pivot sql-server-2008

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

如何使用动态SQL生成列组?

人们喜欢得到不同种类和数量的水果,我想帮助他们.我有一个看起来像这样的表:

name    fruit   count   temp
-----------------------------
Jim     apple    3      hot
Jim     banana   7      cold
Jim     orange   12     cold
Sam     plum     5      hot
Sam     peach    1      hot
Bob     cherry   4      cold
Bob     banana   11     hot
Bob     orange   9      cold
Bob     kiwi     6      hot
Run Code Online (Sandbox Code Playgroud)

每个人可能有1或1000行,我不知道提前了多少,所以我认为这需要动态列列表.我需要它看起来像这样:

name    fruit_1 count_1 temp_1  fruit_2 count_2 temp_2  fruit_3 count_3 temp_3  fruit_4 count_4 temp_4
-------------------------------------------------------------------------------------------------------
Jim     apple     3      hot    banana    7      cold   orange    12     cold   null     null   null
Sam     plum      5      hot    peach     1      hot    null     null    null …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server pivot

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