需要一些帮助。检查最后一个GROUP BY子句。
set nocount on
--Creo variable de tabla sin duplicados
Declare @Temp1 Table (nro_viaje nvarchar(255),cod_cliente nvarchar(255))
if object_id('tempdb..#Temp2') is not null
Begin
drop table #Temp2
End
if object_id('tempdb..#ProcesadosBrutos') is not null
Begin
drop table #ProcesadosBrutos
End
insert into @Temp1 (nro_viaje,cod_cliente)
select distinct [nro_viaje],cod_cliente FROM [Test].[dbo].[Hoja1$] order by nro_viaje
--Remuevo los viajes que fueron de un solo cliente
Delete T
From @Temp1 T
JOIN (select nro_viaje, count(*) cant from @Temp1 group by nro_viaje having COUNT(*)=1) S on T.nro_viaje=S.nro_viaje
--Numero los viajes para iterar
select cod_cliente,nro_viaje, dense_rank()over ( order by nro_viaje) as ViajeID into #Temp2 from @Temp1
--Obtengo el menor viaje para comenzar a iterar
Declare @ViajeID int
Declare @ViajeIDMax int
Select @ViajeID=Min(ViajeID) From #Temp2
Select @ViajeIDMax=MAX(ViajeID) From #Temp2
Create Table #ProcesadosBrutos (Cod_cliente nvarchar(255), Combinables nvarchar(4000), Cantidad nvarchar (255))
While @ViajeID<=@ViajeIDMax --Itero por cada viaje
Begin
Insert into #ProcesadosBrutos (Cod_cliente,Combinables, Cantidad)
SELECT DISTINCT ST2.cod_cliente ,
SUBSTRING(
(
SELECT '-'+CONVERT(varchar,ST1.cod_cliente) AS [text()]
FROM #Temp2 ST1
WHERE
ST1.ViajeID=@ViajeID
and ST1.viajeid = ST2.viajeid
and ST1.cod_cliente <> ST2.cod_cliente
ORDER BY ST1.cod_cliente
FOR XML PATH ('')
), 2, 1000) COMBINABLES,
(SELECT count(*) FROM #Temp2 TMP2 WHERE ST2.nro_viaje = TMP2.nro_viaje GROUP BY nro_viaje) Cantidad
FROM #Temp2 ST2
where ViajeID=@ViajeID --AND (SELECT count(*) FROM #Temp2 TMP2 WHERE ST2.nro_viaje = TMP2.nro_viaje GROUP BY nro_viaje) > 1 AND (SELECT count(*) FROM #Temp2 TMP2 WHERE ST2.nro_viaje = TMP2.nro_viaje GROUP BY nro_viaje) < 4
group by (SELECT count(*) FROM #Temp2 TMP2 WHERE ST2.nro_viaje = TMP2.nro_viaje GROUP BY nro_viaje)
ORDER BY ST2.cod_cliente
--Aumento en 1 el viajeid para proxima iteracion
Set @ViajeID=@ViajeID+1
End
Select distinct * from #ProcesadosBrutos order by Cod_cliente
我收到以下错误:无法在GROUP BY子句列表中使用的表达式中使用聚合或子查询。
我需要按子查询给出的结果进行分组“(SELECT count(*)FROM#Temp2 TMP2 WHERE ST2.nro_viaje = TMP2.nro_viaje GROUP BY nro_viaje)”。
有什么建议吗?感谢。
答案 0 :(得分:0)
您是否尝试使用别名进行GROUP BY?
new JProperty("method",JArray.Parse("[\"password\"]"))