19. juni 2015 - 11:56Der er
13 kommentarer og 1 løsning
Kolonne uden navn
Jeg har optalt alle bynavne i min DB alt efter hvor mange der bor i hver by, men kolonnen har ikke rigtigt noget navn, så jeg har ikke mulighed for at bruge kolonnen, eller hvad.
Jeg vil gerne bruge optælningen til at katogorisere byerne alt efter hvor mange gange i er repræsenteret.
Jeg har nogle screendumps, men har lidt svært ved at implementere dem :-(
Den vil sortere efter de to tekster, men ikke returnere dem som værdier. Så skal du mellem SELECT og FROM:
SELECT CASE COUNT(*) WHEN 6 THEN 'SMALL' WHEN 7 THEN 'LARGE' ELSE 'something else' END AS etellerandet, ... osv ....
...men du kunne også lave dette i det programmeringssprog du sikkert har ovenpå. Lad databasen om data, og programmeringssproget om at vise data.
Synes godt om
Slettet bruger
20. juni 2015 - 13:10#6
Man kan altid lave en order by et alias men du kan ikke lave en where på et alias
din sql skal se nogenlunde sådan her ud:
SELECT COUNT(*) AS town_count, town,CASE WHEN count(*) = 6 Then 'SMALL' WHEN COUNT(*) = 7 Then 'LARGE' Else end as Inddeling FROM customers GROUP BY town
Det virker rimeligt fixet det du skriver, men "Inddeling" virker noget malplaceret og det virker desværre ikke...
Synes godt om
Slettet bruger
20. juni 2015 - 18:49#9
fixet? snakker du om? og det er også SQL.
SELECT COUNT(*) AS town_count, town,CASE WHEN count(*) = 6 Then 'SMALL' WHEN COUNT(*) = 7 Then 'LARGE' Else end as Inddeling FROM customers GROUP BY town
ORDER BY town_count
Din case viser dig hvad indholdet bliver.
Så lav en
SELECT town,CASE WHEN count(town) = 6 Then 'SMALL' WHEN COUNT(town) = 7 Then 'LARGE' Else end as Inddeling FROM customers GROUP BY town
order by count(*)
Synes godt om
Slettet bruger
20. juni 2015 - 19:11#10
Har lavet et lille test forsøg til dig så du bedre kan forstå hvordan det virker hvor jeg har tastet skanderborg og aarhus ind:
SELECT count( [Town]) as AntalTowns,town FROM [Testdata].[dbo].[customers]
group by town
Dette giver resultatet: AntalTowns town 3 Skanderborg 2 Aarhus
Nu vil du så gerne markere dem som large eller small det gør man sådan her:
SELECT count( [Town]) as AntalTowns,town,case when count(town) = 2 then 'small' when count(town) = 3 then 'large' end as Byindeling FROM [Testdata].[dbo].[customers]
group by town
order by count(town)
Dette giver resultatet:
AntalTowns town Byindeling 2 Aarhus small 3 Skanderborg large
Det virker dog desværre ikke, der er en fejl omkring END:
Incorrect syntax near the keyword 'END'.
Synes godt om
Slettet bruger
20. juni 2015 - 19:56#12
Ikke i den her
SELECT count( [Town]) as AntalTowns,town,case when count(town) = 2 then 'small' when count(town) = 3 then 'large' end as Byindeling FROM [Testdata].[dbo].[customers]
Skulle fifle lidt med det, men det lykkedes og det kom til at se sådan ud:
SELECT COUNT(*) AS town_count, town, CASE WHEN count(*) = 6 Then 'SMALL' WHEN COUNT(*) = 7 Then 'LARGE' ELSE 'something else' END AS 'City Cato' FROM customers GROUP BY town ORDER BY town_count
Synes godt om
Ny brugerNybegynder
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.