Zum Forum springen
Benachrichtigungen
Alles löschen

SQL Befehl

14 Beiträge
6 Benutzer
1 Reactions
1,281 Ansichten
MyLady17
Beigetreten: 11.03.2007

Hallo, kann mir jemand dabei helfen?

Ich soll ein Umfrageupdate machen und die Gruppen nicht in Zahlen, sondern je nach Alter in Gruppen (Kinder, Jugendliche) etc. einteilen. Wie mache ich das?
Mit IIF(Alter">8","Jugendliche") kann ich hier ja nicht arbeiten oder?


Antwort
Zitat
13 Antworten
nrockets
Beigetreten: 11.02.2007

Einfaches case when statement oder steh ich gerade aufm schlauch bzw. du meinst was anderes?

Set Gruppen = Case when Alter < 6 then 'Kind'
when Alter < 18 then 'Jugendlicher' etc...


Antwort
Zitat
MyLady17 Themenstarter
MyLady17
Beigetreten: 11.03.2007

Nein, das ist wohl auch so einfach. In meinem SQL Kurs hab ich nur gelernt, wie man damit rechnet, sprich z.B. Alter + 2.
Aber wie man das bei Cases in Text umwandelt, kp. Ich hab das was ich brauche auch bei google nicht gefunden, daher dacht ich mir, ich probier es mal hier. Sorry, SQL bin ich noch ein echter Fisch :(. Hast du eine Beispiellösung für mich parat?


Antwort
Zitat
nrockets
Beigetreten: 11.02.2007

Set Gruppen =

Case when Alter < 6 then 'Kind'
when Alter < 18 then 'Jugendlicher'
when Alter < 65 then 'Erwachsener'
when Alter < 110 then ' Rentner'
else 'Entweder nicht definiert oder unglaublich alt'
end

(Keine Ahnung wie eure Definitionen sind und welchen Datentyp das Feld Gruppen bei dir hat, je nachdem müsste man dann noch was konvertieren..)

und der potentiell mögliche Wertebereich des Feldes Alter wäre bei solchen Statements auch noch interessant, aber so wie sich das liest, brauchst du jetzt auch kein soooo fancy statement


Antwort
Zitat
dErlUxEr
Beigetreten: 07.12.2011

machst du das nur in sql, oder willst du es z.b mit php ausgeben?


Antwort
Zitat
MyLady17 Themenstarter
MyLady17
Beigetreten: 11.03.2007

Nee nur in SQL, bzw. Access
Klappt leider nicht @Nrockets :( (syntaxfehler)


Antwort
Zitat
Tanzhase
Beigetreten: 14.02.2006

Bin kein Experte in SQL, aber ich hätte das einfach so gemacht:

update umfrage set gruppen = 'rentner' where alter < 110;
update umfrage set gruppen = 'erwachsener' where alter < 65;

usw.


Antwort
Zitat
nrockets
Beigetreten: 11.02.2007

Original von MyLady17
Nee nur in SQL, bzw. Access
Klappt leider nicht @Nrockets :( (syntaxfehler)

vor dem case und nach dem end kann jeweils noch ne klammer und am Anfang noch ein update tabellenname aber dann müsste es eigentlich funktionieren...
hab nur auf Arbeit sql, daher kann ich es hier leider gerade nicht nachstellen...


Antwort
Zitat
Tanzhase
Beigetreten: 14.02.2006

Ja, ich denke die Klammern sind ein Muss. Dann sollte es gehen.


Antwort
Zitat
HoRRoR
Beigetreten: 11.02.2005

Case when Alter < 6 then 'Kind'
when Alter < 18 then 'Jugendlicher'
when Alter < 65 then 'Erwachsener'
when Alter < 110 then ' Rentner'
else 'Entweder nicht definiert oder unglaublich alt'
end AS GruppenAlter

letzteres fehlt denk ich


Antwort
Zitat
nrockets
Beigetreten: 11.02.2007

Original von HoRRoR
Case when Alter < 6 then 'Kind'
when Alter < 18 then 'Jugendlicher'
when Alter < 65 then 'Erwachsener'
when Alter < 110 then ' Rentner'
else 'Entweder nicht definiert oder unglaublich alt'
end AS GruppenAlter

letzteres fehlt denk ich

Bei einem Update Statement afaik nicht der Name der Spalte ist schon eindeutig definiert durch Set Gruppen = ....


Antwort
Zitat
izebox
Beigetreten: 07.03.2006

Hier werden sie geholfen
Access, naja, wers mag :coolface:


Antwort
Zitat
MyLady17 Themenstarter
MyLady17
Beigetreten: 11.03.2007

Hey danke nochmal für die Hilfe. Hab es nun so hinbekommen:

UPDATE Umfrage
Set Gruppe =IIf(Alter < 9, "Kinder",
IIf(Alter < 14, "Jugendliche",
IIf(Alter < 20, "Junge Erwachsene",
IIf(Alter < 49, "Erwachsene",
IIf(Alter < 60, "Erwachsene", "Senioren")))));

:)

Leider gleich ein weiteres Problem:

TRANSFORM AVG(Alter) As Alters2
SELECT Geschlecht, Region, AVG(Alters2) As Altersdurchschnitt, COUNT(*) AS Anzahl
FROM Umfrage
GROUP BY Geschlecht, Region
Pivot Gruppe;

Jemand eine Idee wie ich "Altersdurchschnitt" mit nur 2 Nachkommastellen darstellen kann?


Antwort
Zitat
izebox
Beigetreten: 07.03.2006

ROUND(Altersdurchschnitt, 2)
oder FORMAT(Altersdurchschnitt, "#.##0,00")


Antwort
Zitat
Teilen: