可能重复:
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