Ich habe 2 Tabellen. Einer ist eine Liste von Vierteln und der andere ist eine Liste von Jahren. Ich muss eine Abfrage schreiben, um die Jahre zurückzugeben, und das Wort "teilweise" am Ende der Jahre anhängen, die weniger als 4 Viertel enthalten.SQL Concat-Funktion nur, wenn die Anzahl der Zeilen kleiner als die Anzahl
Ein Beispiel für ein paar Zeilen aus dem Jahr Tabelle:
YearName | YearUUID
2015 | 15C33
2016 | 16C33
Ein Beispiel für die Tabelle Viertel:
QuarterNumber | StartDate | YearUUID
1 | 2015-01-01 | 15C33
2 | 2015-03-01 | 15C33
3 | 2015-06-01 | 15C33
4 | 2015-09-01 | 15C33
1 | 2016-01-01 | 16C33
2 | 2016-03-01 | 16C33
Siehe in dem obigen Beispiel, dass 2016 ein Teil Jahr sein wird, . So sollen meine Abfrage-Ergebnisse wie folgt:
YearsList
2015
2016 - Partial
ich vor der Concat Funktion verwendet habe, aber nie mit einer Bedingung wie diese. Ohne zu wissen, wie es zu konditionieren, habe ich die folgenden:
SELECT DISTINCT CONCAT(Years.YearName, ' - Partial') as YearsList
FROM dbo.Quarters Quarters,
dbo.Years Years
WHERE Quarters.YearUuid = Years.YearUuid
AND Quarters.ActiveStatus = 'ACTIVE'
AND Quarters.BroadcastQuarterType = 'STANDARD'
ORDER BY YearsList ASC;
Das gibt mir eine Liste von all den Jahren, aber anfügt ‚Partial‘ auf jeden einzelnen von ihnen. Da ist offensichtlich keine Bedingung drin. Wie integriere ich eine Bedingung in diese Abfrage, so dass ich volle Jahre (Jahre, die 4 Quartale enthalten) ohne "Partial" am Ende angehängt habe, während ich auch die DISTINCT beibehalten und die ORDER BY beibehalten habe.
ich die folgende Fehlermeldung: Msg 245, Ebene 16, Status 1, Zeile 1 Fehler bei der Konvertierung, wenn die varchar-Wert-Umwandlungs '2011 - Teil' zu Datentyp int. –
Warten Sie, das klingt wie eine SQL Server-Fehlermeldung. Ihre Frage ist mit Oracle getaggt. Bist du nicht auf Oracle? – trincot
Entschuldigung, ja, ich verwende SQL Server Management Studio. Ich füge das zu den Tags hinzu –