Forskel på svar med og uden UNION
Hejsa,Jeg forsøger at få en forespøgsel til at køre, der kan returnere et gennemsnit af alle brugere, samt den bruger der har det højeste + den der har det laveste gennemsnit.
Jeg har følgende tre queries til det:
Overall snit:
select '' as CompGroupMax, '' as CompGroupMin, 0 as NumberMin, 0 as NumberMax, 0 as AverageMin, 0 as AverageMax, avg(fareamount) as AverageAll, count(*) as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I'
Bruger med højeste:
select top 1 compgroup as CompGroupMax, '' as CompGroupMin, 0 as NumberMin, count(*) as NumberMax, 0 as AvereageMin, avg(fareamount) AS AverageMax, 0 as AverageAll, 0 as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I' group by compgroup order by avg(fareamount) DESC
Bruger med laveste:
select top 1 '' as CompGroupMax, compgroup as CompGroupMin, count(*) as NumberMin, 0 as NumberMax, avg(fareamount) AS AverageMin, 0 as AverageMax, 0 as AverageAll, 0 as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I' group by compgroup order by avg(fareamount)
Disse tre queries returnerer hver for sig det korrekte resultat. Jeg prøver så at kombinere dem via UNION:
select * from
(
(select '' as CompGroupMax, '' as CompGroupMin, 0 as NumberMin, 0 as NumberMax, 0 as AverageMin, 0 as AverageMax, avg(fareamount) as AverageAll, count(*) as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I')
union
(select top 1 '' as CompGroupMax, compgroup as CompGroupMin, count(*) as NumberMin, 0 as NumberMax, avg(fareamount) AS AverageMin, 0 as AverageMax, 0 as AverageAll, 0 as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I' group by compgroup order by avg(fareamount))
union
(select top 1 compgroup as CompGroupMax, '' as CompGroupMin, 0 as NumberMin, count(*) as NumberMax, 0 as AvereageMin, avg(fareamount) AS AverageMax, 0 as AverageAll, 0 as NumberAll from orderrep where routing like 'CPH-AMS-CPH' and createdate>'01-01-2002' and createdate<'12-31-2002' and Fak_Kre='I' group by compgroup order by avg(fareamount) DESC)
) x
Hvor jeg får tre rækker (en fra hver query) den første er stadig korrekt. Men de to sidste queries returnerer nu den samme bruger, som er en anden end de to der blver returneret ef den ene hhv. den anden query når de køres hver for sig.
Er der nogen, der kan gennemskue hvad der sker??
