1

可能重复:
连接分组行

我正在使用这张桌子:

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

4

0 回答 0