SQL Server 2008: wie man die Ausgabe formatieren als Währung
Habe ich eine Abfrage-Zeichenfolge, die einen Wert zurückgibt, der hat mehrere Dezimalstellen. Ich möchte dieses format, um eine Währung $123.45.
Hier ist die Abfrage:
SELECT COALESCE(SUM(SUBTOTAL),0)
FROM dbo.SALESORD_HDR
where ORDERDATE = datediff(d,0,getdate())
and STATUS NOT IN (3,6)
Möchte ich das Ergebnis in einer Währung mit 2 dezimal stellen.
Meinst du eine "echte" Währung, man kann mit der Formatierung für verschiedene Kulturen? Ähnlich wie die FORMAT-Funktion, die zuerst in SQL Server 2012 (msdn.microsoft.com/en-us/library/hh213505.aspx)?
Nein, nur einer einzigen Kultur (en-us) für Neuseeland-Dollar $#,###.00
Ok. Ich immer noch eine Antwort, würde Konto für die vollständige Formatierung (d.h. das symbol der Währung, die Platzierung des symbols, Tausendertrennzeichen Trennzeichen und Dezimaltrennzeichen). Aber klar zu sein, Sie wollen, dass die Tausender-Trennzeichen (wie im Beispiel gezeigt-in Ihrem Kommentar), richtig?
Es wäre gut / besser.
Nein, nur einer einzigen Kultur (en-us) für Neuseeland-Dollar $#,###.00
Ok. Ich immer noch eine Antwort, würde Konto für die vollständige Formatierung (d.h. das symbol der Währung, die Platzierung des symbols, Tausendertrennzeichen Trennzeichen und Dezimaltrennzeichen). Aber klar zu sein, Sie wollen, dass die Tausender-Trennzeichen (wie im Beispiel gezeigt-in Ihrem Kommentar), richtig?
Es wäre gut / besser.
InformationsquelleAutor Bevan | 2014-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie auf der Suche für eine "echte" Währung, format, ähnlich zu dem, was erreicht werden kann, über die FORMAT Funktion, die begann in SQL Server 2012, dann erreichen Sie die gleiche Funktionalität über SQLCLR. Sie können entweder code dem einfachen
.ToString("C" [, optional culture info])
sich selbst, oder Sie können download der SQL# Bibliothek (die ich geschrieben habe, aber diese Funktion ist in der Kostenlosen version) und verwenden Sie es, wie die T-SQL -FORMAT
Funktion.Beispiel:
Ausgabe:
Ausgabe:
Dieser Ansatz funktioniert in SQL Server 2005 /2008 /2008 R2. Und, wenn Sie ein upgrade auf eine neuere version von SQL Server haben Sie die Möglichkeit, einfach Umschalten auf die native T-SQL-Funktion durch nichts zu tun, mehr als den Namen zu ändern
SQL#.Math_FormatDecimal
nurFORMAT
.Setzen diese in den Kontext der query, aus der ursprünglichen Frage:
EDIT:
ODER, da es scheint, dass nur
en-us
- format ist offen, es gibt einen short-cut, ist einfach zu einfach: die Umwandlung von entweder derMONEY
oderSMALLMONEY
Datentypen mithilfe der KONVERTIEREN Funktion hat einen "Stil" füren-us
minus das symbol der Währung, aber das ist leicht genug, um hinzufügen:Da die Quelle Datentyp des
SUBTOTAL
Feld istFLOAT
wird, muss Sie zuerst umgewandelt werden, umMONEY
und dann inVARCHAR
. Aber, das optionale "style" ist ein Grund, warum ich lieberCONVERT
überCAST
.es ist nur eine Funktion, wie COALESCE, SUMME, etc. Ich update meine Antwort, um es in den Kontext Ihrer Abfrage.
Antwort wurde aktualisiert mit dem tatsächlichen Verbrauch.
gut zu wissen über die Währung format-Funktion
Vielleicht habe ich gerade gefunden, eine noch einfachere Antwort, die tut, was Sie wollen. Ist die
SUBTOTAL
Feld einMONEY
oderSMALLMONEY
Datentyp?InformationsquelleAutor Solomon Rutzky