如何将多行结果连接到一行?

时间:2012-08-13 15:35:01

标签: sql sql-server

  

可能重复:
  Concatenate grouped rows

我正在使用此表:

fecha                    cliente    preg  resp  puntos  calif   pagoxejec
2009-03-28 00:00:00 2005   9        23     1      94       5    5
2009-03-28 00:00:00 2005   9        31     1      94       5    5
2009-03-28 00:00:00 2005   9        32     1      55       3    3
2009-03-28 00:00:00 2005   9        33     1      37       2    2
2009-03-28 00:00:00 2005   9        34     0      0        0    0
2009-03-28 00:00:00 2379   7         8     1      0       35    35

(这有更多记录。)

我有一个名为cliente的表,现在这是我的查询:

DECLARE @supervisor varchar(50)/* sera una cadena de tipo 1 ó   3,4,5 para usarse como supervisor in (@supervisor)*/      
DECLARE @fechainicial datetime /*será la fecha inicial tomada*/      
DECLARE @fechafinal datetime /*será la fecha final tomada*/      
SET @supervisor='1,2,3,4'
SET @fechainicial='2009-02-1 00:00:00.000'
SET @fechafinal='2009-03-19 00:00:00.000'

SELECT smerc.cliente, nivelmkt nivel, MAX(fecha) ultima, preg, resp
FROM smerc
INNER JOIN clientes on smerc.cliente=clientes.cliente
WHERE fecha BETWEEN @fechainicial AND @fechafinal
    AND resp=1
GROUP BY smerc.cliente, preg, resp, nivelmkt
ORDER BY smerc.cliente

还有一些结果:

cliente nivel   ultima          preg resp
 892     1  2009-03-03 00:00:00 2   1
 892     1  2009-03-03 00:00:00 3   1
 892     1  2009-03-03 00:00:00 6   1
 892     1  2009-03-03 00:00:00 23  1
 892     1  2009-03-03 00:00:00 32  1
 892     1  2009-03-03 00:00:00 34  1
 892     1  2009-03-03 00:00:00 44  1
 892     1  2009-03-03 00:00:00 999 1
1889     1  2009-03-03 00:00:00 2   1 

nivel表:

  nivel preg    nomtiny
1   1   E  
1   2   OME
1   3   EX 
1   4   EP 
1   5   E7 
1   6   ROT
1   11  H  
1   12  PPA
1   21  PDV
1   23  CDP
1   31  EXI
1   32  PLC
1   33  COP
1   34  PM 
1   40  O  
1   41  PAP
1   44  NCA
1   999 PRP
2   1   E  

现在我需要下一个结果:

cliente    nivel    preg    nomtiny
892    1    1   E  
892    1    4   EP 
892    1    5   E7 
892    1    11  H  
892    1    12  PPA
892    1    21  PDV
892    1    31  EXI
892    1    33  COP
892    1    40  O  
892    1    41  PAP

您可以在smerc (BETWEEN @fechainicial AND @fechafinal)上看到 这个客户端在最后的结果上没有这个spreguntas'records或respuesta = 0

  

(2条件客户没有这个preg,(与cliente'nivel)或他   确实有这个记录,但resp等于0)

然后我的最终结果必须是:

client  allnomtinyforthisclient
892   E,EP,E7,H,PPA,PDV,EXI,COP,O,PAP

如何让多行显示在一行上?

服务器是sql 2005

0 个答案:

没有答案