Posteriormente a mirar en diferentes repositorios y sitios de internet al terminar descubrimos la respuesta que te enseñaremos pronto.
Solución:
Si estás buscando un “true” Formato de moneda, similar a lo que se puede lograr a través de la función FORMAT que comenzó en SQL Server 2012, luego puede lograr exactamente la misma funcionalidad a través de SQLCLR. Puede codificar el simple .ToString("C" [, optional culture info])
usted mismo, o puede descargar la biblioteca SQL # (que escribí, pero esta función está en la versión gratuita) y usarla como T-SQL FORMAT
función.
Por ejemplo:
SELECT SQL#.Math_FormatDecimal(123.456, N'C', N'en-us');
Producción:
$123.46
SELECT SQL#.Math_FormatDecimal(123.456, N'C', N'fr-fr');
Producción:
123,46 €
Este enfoque funciona en SQL Server 2005/2008/2008 R2. Y, si / cuando actualiza a una versión más nueva de SQL Server, tiene la opción de cambiar fácilmente a la función T-SQL nativa simplemente cambiando el nombre SQL#.Math_FormatDecimal
ser justo FORMAT
.
Poniendo esto en el contexto de la consulta de la pregunta original:
SELECT SQL#.Math_FormatDecimal(COALESCE(SUM(SUBTOTAL),0), N'C', N'en-us') AS [Total]
FROM dbo.SALESORD_HDR
where ORDERDATE = datediff(d,0,getdate())
and STATUS NOT IN (3,6)
EDITAR:
O, ya que parece que sólo en-us
se desea el formato, hay un atajo que es demasiado fácil: convertir desde el MONEY
o SMALLMONEY
tipos de datos que usan la función CONVERT tiene un “estilo” para en-us
menos el símbolo de la moneda, pero eso es bastante fácil de agregar:
SELECT '$' + CONVERT(VARCHAR(50),
CONVERT(MONEY, COALESCE(SUM(SUBTOTAL), 0)),
1) AS [Total]
FROM dbo.SALESORD_HDR
where ORDERDATE = datediff(d,0,getdate())
and STATUS NOT IN (3,6)
Dado que el tipo de datos de origen del SUBTOTAL
el campo es FLOAT
primero debe convertirse a MONEY
y luego convertida en VARCHAR
. Pero, el “estilo” opcional es una de las razones por las que prefiero CONVERT
sobre CAST
.
Aquí hay una sugerencia de la sintaxis a usar para preparar la consulta de búsqueda para el futuro.
select format(123.56789,'C2','en-US') --$123.57 ;
select format(123.56789,'C3','en-US') --$123.568;
select format(123.56789,'C0','en-US') --$124
Al final de todo puedes encontrar las críticas de otros creadores, tú asimismo tienes la habilidad insertar el tuyo si te apetece.