这是一个很长的镜头,但我希望有人可以帮助我让这些东西起作用。我正在获取正确的数据,但它在多行上。我无法使用suff函数将DaysWithoutLogout放在一行上。
更新:好的,我已经简化了我的问题,但我并不真正理解STUFF功能。我在这个网站上看到过很多从一个表中选择而不是多个表的例子。我的选择仍然返回多行,而不是预期的两行。
Create table #DaysWithoutLoggout
(
userid int,
[days] nvarchar(max)
)
create table #user
(
userid int,
name nvarchar(100)
)
Insert into #user values('1', 'nick')
Insert into #user values('2', 'jon')
Insert into #DaysWithoutLoggout values('1', '13')
Insert into #DaysWithoutLoggout values('1', '15')
Insert into #DaysWithoutLoggout values('1', '24')
Insert into #DaysWithoutLoggout values('2', '10')
Insert into #DaysWithoutLoggout values('2', '3')
select us.name, alldays =
STUFF((SELECT ', ' + b.[days]
FROM #DaysWithoutLoggout b
inner join #user u
on u.userid = b.userid
WHERE b.[days] = a.[days]
FOR XML PATH('')), 1, 2, '')
FROM #DaysWithoutLoggout a
inner join #user us
on us.userid = a.userid
GROUP BY us.name, a.[days]
答案 0 :(得分:0)
根据您的示例表和数据,您应该能够使用以下查询将days
连接在一起:
SELECT DISTINCT us.name,
STUFF(
(SELECT ', ' + d.days
FROM DaysWithoutLoggout d
WHERE d.userid = us.userid
FOR XML PATH (''))
, 1, 1, '') AS days
FROM [user] us;