Hej, jag har här på pellesoft medlemmar och vill se hur många som finns inom ett visst intervall. När jag tittar på ett numeriskt fält vill jag samtidigt returnera åldersintervallet, men då får jag ett fel vilket är logiskt. Pröva: Om man konverterar integer kolumnen först till en char verkar det funka, > Om man konverterar integer kolumnen först till en char verkar det funkaKonvertera int till text under case-sats
Jag har provat att använda mig av convert, men får inte till det i alla fall.
<code>
select sum(1) as antal,
(CASE lngage
WHEN 1 THEN '10-15'
WHEN 2 THEN '16-20'
WHEN 3 THEN '21-25'
WHEN 4 THEN '26-30'
WHEN 5 THEN '31-40'
WHEN 6 THEN '41-50'
WHEN 7 THEN '51-60'
WHEN 8 THEN '61-99'
ELSE 0
END) AS tmp
from tbluser
group by lngage
order by lngage
</code>
lngAge är integer och returnerar 1-8 som motsvarar åldersintervallen. Om jag skriver '10-15' uppstår felet och jag önskar få till det så att det fungerar. Hoppas någon kan ledsaga mig hur jag skall göra.
Felmeddelandet blir cant convert integer to string, eftersom tmp blir strängSv: Konvertera int till text under case-sats
<code>
select sum(1) as antal,
(CASE lngage
WHEN 1 THEN '10-15'
WHEN 2 THEN '16-20'
WHEN 3 THEN '21-25'
WHEN 4 THEN '26-30'
WHEN 5 THEN '31-40'
WHEN 6 THEN '41-50'
WHEN 7 THEN '51-60'
WHEN 8 THEN '61-99'
ELSE '0'
END) AS tmp
from tbluser
group by lngage
order by lngage
</code>Sv: Konvertera int till text under case-sats
ungedär som nedan:
SELECT SUM(1) AS antal, (CASE cast(lngage AS char(5))
WHEN '1' THEN '10-15' WHEN '2' THEN '16-20' WHEN '3' THEN '21-25' WHEN '4' THEN '26-30' WHEN '5' THEN '31-40' WHEN '6' THEN '41-50' WHEN '7'
THEN '51-60' WHEN '8' THEN '61-99' ELSE '0' END) AS tmp
FROM tbluser
GROUP BY lngage
ORDER BY lngageSv: Konvertera int till text under case-sats
Det behöver man inte göra, Kalles lösning fungerar ju utmärkt. Felet Pelle gjorde var att hans case-sats returnerar värden av två olika datatyper, char i de flesta fallen men int i det sista fallet. Eftersom alla värden i en kolumn måste vara av samma datatyp blir det ett fel, vilket Kalle rättade till.