Avatar billede pluth Nybegynder
27. juli 2011 - 20:25 Der er 4 kommentarer og
1 løsning

Problem med SQL statement

Hej,

Jeg har nedenstående SQL, som jeg order by Salg desc, LastTry men når jeg kører nedenstående er sortering ikke som ønsket.

Er der nogen som kan se hvad der er galt og rette det ? Mit bud er at det er noget ved den sum jeg laver, men kan ikke se hvad det er som går galt.

WITH CTE AS (SELECT *, NTILE(14) OVER(ORDER BY salg desc, LastTry) AS Gruppe FROM PL where campaignid = '506'), CTE2 AS (SELECT Gruppe, COUNT(*) AS TotalAntal, (SELECT SUM(Seconds) FROM cte t2 WHERE t1.Gruppe = t2.Gruppe and campaignid = '506') as AntalTimer
FROM cte t1 GROUP BY Gruppe) SELECT SUBSTRING((SELECT ',' + CAST(AntalTimer AS VARCHAR(10)) FROM cte2 FOR XML PATH('')),2,20000) AS CSV
Avatar billede HenrikSjang Nybegynder
27. juli 2011 - 20:42 #1
Din order by bestemmer jo kun hvilke rækker der kommer i hvilke grupper. I dine efterfølgende selects har du jo ingen order by på. Måske du skal tilføje en ORDER BY Gruppe eller noget?

/Sjang
Avatar billede pluth Nybegynder
27. juli 2011 - 20:56 #2
Hej Sjang,

Hvor vil du sætte den order by ? For lige meget hvor jeg sætter den giver det en fejl.
Avatar billede HenrikSjang Nybegynder
28. juli 2011 - 18:58 #3
Du laver 2 niveau'er af cte'er, og laver så til sidst én select fra cte2, som giver dit resultat. Men den aller sidste select benytter kun kolonnen AntalTimer, og slet ikke Gruppe eller TotalAntal kolonnerne.

Mit gæt ville være, at du ønsker at sortere efter Gruppe, og så skal du indsætte " ORDER BY Gruppe" lige efter "FROM cte2" og lige før " FOR XML PATH". Det burde i hvert fald ikke give fejl, og det gør at AntalTimer-værdierne kommer ud sorteret efter Gruppe. Men om det er det du ønsker, er kun gætterier uden du fortæller os det.

Dvs din sidste linje ser sådan ud:


SELECT
    SUBSTRING((SELECT ',' + CAST(AntalTimer AS VARCHAR(10)) FROM cte2 ORDER BY Gruppe FOR XML PATH('')),2,20000) AS CSV
Avatar billede pluth Nybegynder
29. juli 2011 - 10:45 #4
Hej,

Det virker som det skal nu tak :)

Smider du et svar?
Avatar billede HenrikSjang Nybegynder
29. juli 2011 - 19:16 #5
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester