【发布时间】:2018-09-27 20:21:45
【问题描述】:
好的,我已经解决了一半的问题,我相信我需要帮助解决另一半。我能够从一列 (TEAMS) 中填充几行数据并连接到一列,但是,我似乎需要对同一数据集中的另一列执行相同的操作。
这是当前数据集示例:
FIRST | LAST | YEAR | ID | TEAMS
-- -- -- -- -- -- -- -- -- -- -- -- --
Chris | Anderson | 2015 | 176 | 05 White (B)
Chris | Anderson | 2016 | 176 | 05 Royal (B)
Chris | Anderson | 2017 | 176 | 05 Royal (B), '08 Gray (B)
Chris | Anderson | 2018 | 176 | 05 Royal (B), 08 (B)
我需要将年份 VALUE 作为列名,将团队数据作为 VALUE,如下所示:
FIRST | LAST | 2015 | 2016 | 2017
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Chris | Anderson | 05 White (B) | 05 Royal (B) | 05 Royal (B), '08 Gray (B)
这是生成当前(第一个)数据集的现有 SQL 语句。
SELECT DISTINCT TOP 100 PERCENT dbo.Coaches.FirstName, dbo.Coaches.LastName, dbo.Teams.clubYear, dbo.Coaches.CoachID,
STUFF (( SELECT ', '+ SUBSTRING(TeamName,14,len(TeamName)) + ' ('+LEFT(gender,1)+')'
FROM dbo.Teams ST
WHERE ST.CoachID = dbo.Coaches.CoachID AND ST.clubYear = dbo.Teams.clubYear
ORDER BY clubYear, CoachID
FOR XML PATH('')), 1, 1, '') AS Teams FROM dbo.Coaches INNER JOIN
dbo.Teams ON dbo.Coaches.CoachID = dbo.Teams.CoachID
WHERE dbo.teams.teamTypeID = 3
GROUP BY dbo.Coaches.FirstName, dbo.Coaches.LastName, dbo.Teams.clubYear, dbo.Teams.TeamName, dbo.Coaches.CoachID
ORDER BY dbo.Coaches.LastName, dbo.Coaches.FirstName, dbo.Teams.clubYear
【问题讨论】:
-
什么版本的 SQL Server?发布结果样本非常有帮助。由于它不是特定于 CF 的,请注意将其放入 sqlfiddle.com? :-) 这让其他人更容易协作并帮助您找到答案。
-
看起来像 PIVOT 表问题。
标签: sql-server tsql coldfusion