将列转换为行,使用分隔符" - ",";"

-1 sql t-sql sql-server sql-server-2008

输入:

      select(Emp_no, ADate, Atime)
Run Code Online (Sandbox Code Playgroud)
      12333,     12-02-2013,    09.12 - 12.30
      12333,     12-02-2013,    12.32 - 17.30   

      13444,     12-02-2013,    09.10 - 18.30

      14444,     12-02-2013,    09.13 - 12.30
      14444,     12-02-2013,    17.20
Run Code Online (Sandbox Code Playgroud)

输出:

      12333,     12-02-2013,    09.12 - 12.30 ; 12.32 - 17.30
      13444,     12-02-2013,    09.10 - 18.30
      14444,     12-02-2013,    09.13 - 12.30 ; 17.20
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 5

您可以使用类似的东西将多行连接成一行:

select distinct t1.Emp_no,
  t1.ADate, 
  STUFF(
         (SELECT '; ' + cast(t2.Atime as varchar(50))
          FROM yourtable t2
          where t1.Emp_no = t2.Emp_no
            and t1.ADate = t2.ADate
          FOR XML PATH (''))
          , 1, 1, '')  AS Atime
from yourtable t1
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

或者你可以使用一个CROSS APPLY具有FOR XML PATH:

select distinct t1.Emp_no,
  t1.ADate, 
  left(t2.Atime, len(t2.atime)-1) ATime
from yourtable t1
cross apply
(
  select t2.Atime + '; '
  from yourtable t2
  where t1.Emp_no = t2.Emp_no
    and t1.ADate = t2.ADate
  FOR XML PATH('')
) t2 (Atime)
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo