SQL Server 2008: comment faire pour formater la sortie en tant que monnaie
J'ai une chaîne de requête qui renvoie une valeur qui a plusieurs décimales. Je veux ce format à un bureau de $123.45.
Voici la requête:
SELECT COALESCE(SUM(SUBTOTAL),0)
FROM dbo.SALESORD_HDR
where ORDERDATE = datediff(d,0,getdate())
and STATUS NOT IN (3,6)
Je veux le résultat dans un bureau avec 2 décimales.
Voulez-vous dire une "vraie" monnaie, que l'on peut gérer la mise en forme pour les différentes cultures? Similaire à la fonction FORMAT qui a commencé dans SQL Server 2012 (msdn.microsoft.com/en-us/library/hh213505.aspx)?
Non, juste une seule culture (en-us) pour la Nouvelle-Zélande Dollars $#,###.00
Ok. J'ai tout de même ajouté une réponse qui pourrait rendre compte de la mise en forme complète (c'est à dire le symbole de la devise, le placement de la le symbole, le séparateur de milliers, et point décimal). Mais pour être clair, vous vous voulez le séparateur des milliers (comme le montre l'exemple dans votre commentaire), droit?
Il serait bon / meilleur.
Non, juste une seule culture (en-us) pour la Nouvelle-Zélande Dollars $#,###.00
Ok. J'ai tout de même ajouté une réponse qui pourrait rendre compte de la mise en forme complète (c'est à dire le symbole de la devise, le placement de la le symbole, le séparateur de milliers, et point décimal). Mais pour être clair, vous vous voulez le séparateur des milliers (comme le montre l'exemple dans votre commentaire), droit?
Il serait bon / meilleur.
OriginalL'auteur Bevan | 2014-09-29
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la recherche d'un "vrai" format de Devise, similaire à ce qui peut être réalisé via le FORMAT fonction de démarrage de SQL Server 2012, vous pouvez obtenir exactement la même fonctionnalité via SQLCLR. Vous pouvez soit le code de la simple
.ToString("C" [, optional culture info])
vous-même, ou vous pouvez télécharger le SQL# de la bibliothèque (qui je l'ai écrit, mais cette fonction est dans la version Gratuite) et de l'utiliser comme le T-SQLFORMAT
fonction.Par exemple:
De sortie:
De sortie:
Cette approche fonctionne dans SQL Server 2005 /2008 /2008 R2. Et, si /lorsque vous effectuez la mise à niveau vers une version plus récente de SQL Server, vous avez la possibilité de passer facilement du T-SQL natif de la fonction en ne faisant rien de plus que de changer le nom
SQL#.Math_FormatDecimal
être justeFORMAT
.Pour replacer cela dans le contexte de la requête à partir de la question d'origine:
EDIT:
OU, depuis, il semble que seul
en-us
format est désiré, il est un raccourci qui est tout simplement trop facile: la Conversion à partir soit de laMONEY
ouSMALLMONEY
les types de données à l'aide de la CONVERTIR fonction a un "style" pouren-us
moins le symbole de la monnaie, mais c'est assez facile d'ajouter:Depuis la source type de données de l'
SUBTOTAL
champ estFLOAT
, il doit d'abord être converti àMONEY
et puis converti enVARCHAR
. Mais, l'option "style" est l'une des raisons que je préfèreCONVERT
surCAST
.c'est juste une fonction comme FUSIONNENT, SOMME, etc. Je vais mettre à jour ma réponse à utiliser dans le contexte de votre question.
la réponse a été mis à jour avec l'utilisation réelle.
bon à savoir à propos du format de la devise de la fonction
J'ai peut-être trouvé un moyen encore plus simple de répondre à qu'est-ce que vous voulez. Est le
SUBTOTAL
champ unMONEY
ouSMALLMONEY
type de données?OriginalL'auteur Solomon Rutzky
Voici une suggestion de la syntaxe à utiliser pour l'avenir de la requête de recherche.
OriginalL'auteur Microtechie