可能重复:
连接分组行
我正在使用这张桌子:
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