Hola gente
Ayer he visto (por simple curiosidad) un artículo que
postearon aquí para generarlos junto al resultado:
http://support.microsoft.com/defaul...cid=kb;EN-
US;q186133#1
El procedimiento se basa en count(*) y where x >= y
1) Según entiendo yo, en los ejemplos 2 y 3 que tienen una
suma, la cláusula group by hace que los resultados se
multipliquen por la cantidad de veces que cumple la
condición (rank=count(*)), haciendo que sólo la fila 1
entregue el resultado correcto, la fila 2 el doble, la 3
el triple, y así...
Creo que lo correcto sería volver a "deshacer" la suma que
hace el group by, dividiendo por count:
select rank=count(*), s1.pub_id, sales=sum(s1.sales)/COUNT
(*)
from (select ...
2) Yo eso mismo lo he hecho en una ocasión con una #tabla
con un campo identity, la pregunta es ¿es realmente más
eficiente como dice allí esta solución que proponen,
teniendo en cuenta que hace una lectura doble de cada
tabla, y hasta veo en el plan de ejecución que al final
igual está creando una tabla temporal?
Gracias
Manuel
pd: Gracias y felicitaciones por la colaboración que
prestan día a día. Es un grupo excepcional.
Leer las respuestas