Cantidad de clientes y peso total?

Hola amigos me gustaría que me ayudaran con el siguiente query, necesito conocer la cantidad de clientes y el peso total de las ordenes de venta por estado, sin embargo, como cada producto de cada pedido tiene un peso distinto, la función count me contabiliza cada uno de los pesos que tiene cada producto, de cada pedido, de cada cliente y no el número de cliente, ¿cómo puedo hacer en este caso?
Por ejemplo

N° CLIENTES ESTADO PESO_KG PESO_TON
69 Barinas 2.123,52 2,12

Barinas tiene solo 21 clientes pero 69 pesos distintos con los que hace la sumatoria total

SELECT DISTINCT COUNT(T0.[CardName]) AS ‘N° CLIENTES’, CASE WHEN T5.[State] = 01 THEN ‘Amazonas’ WHEN T5.[State] = 02 THEN ‘Anzoategui’ WHEN T5.[State] = 03 THEN ‘Apure’ WHEN T5.[State] = 04 THEN ‘Aragua’ ELSE ‘N/A’ END ESTADO, sum (CASE WHEN T1.[UseBaseUn] = ‘Y’ THEN T1.[OpenQty]*T6.[IWeight1] WHEN T1.[UseBaseUn] = ‘N’ THEN T1.[OpenQty]*T6.[SWeight1] ELSE ‘N/A’ END) AS PESO_KG, (sum (CASE WHEN T1.[UseBaseUn] = ‘Y’ THEN T1.[OpenQty]*T6.[IWeight1] WHEN T1.[UseBaseUn] = ‘N’ THEN T1.[OpenQty]*T6.[SWeight1] ELSE ‘N/A’ END) /1000 as PESO_TON FROM ORDR T0 INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry LEFT JOIN OINV T2 ON T1.TrgetEntry = T2.DocEntry left JOIN INV1 T3 ON T2.[DocEntry] = T3.[DocEntry] INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode] INNER JOIN CRD1 T5 ON T4.[CardCode] = T5.[CardCode] INNER JOIN OITM T6 ON T1.[ItemCode] = T6.[ItemCode] WHERE T0.[DocStatus] = ‘O’ and T1.LineStatus = ‘O’ GROUP BY T5.State

Hola @Ari_Olivar

Y te recomiendo generar tres consultas y posteriormente unirlas

Saludos.

Hola Ari, yo haria una subconsulta, porque no puede quedar en una sola, algo asi pero tendrias que modificarla a tus necesidades

Select 
	T5.State
	, Q1.clientes
	, sum(T6.[SWeight1]) as Peso
	
From
	ORDR T0 INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
	INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode] 
	INNER JOIN CRD1 T5 ON T4.[CardCode] = T5.[CardCode]
	INNER JOIN OITM T6 ON T1.[ItemCode] = T6.[ItemCode] 
	LEft join (
		Select count(T0.CardCode) as [clientes], T5.state 
		from ORDR T0 	INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode] 
			INNER JOIN CRD1 T5 ON T4.[CardCode] = T5.[CardCode] 
		group by T5.state) Q1 on T5.state = Q1.State
Group by T5.State, Q1.clientes

Este tema se cerró automáticamente 91 días después de la última publicación. No se permiten nuevas respuestas.