Member 13410460 Ответов: 2

Как установить валютный формат общей цены в SQL ?


Привет всем, у меня есть SQL-код, который я беру из него общую сумму, но число не приходит в полном формате,то, что я хочу от числа, это показать вот так ("1.500, 00") и то, что я получаю вот так ("1500,00"), так что это мой код:


SELECT
        Sum(Price) As Total,
        CONVERT(char(7), date, 120) As [year],
		Department 
    FROM
        dbo.Expenses
    WHERE
       CONVERT(char(7), date, 120) Between '2017-01' And '2019-01'
    And
        Department = 'Grocery' 
    GROUP BY
       CONVERT(char(7), date, 120),
	   Department 

и он показывает мне номер без полной остановки. Номер, который я получаю, предназначен для примеров 5656,75 и то, что я хотел бы быть 5.656,75

Что я уже пробовал:

Это полный код, над которым я работаю, и я не знаю, куда и как его поместить. формат число в области суммы.

WITH cte As
(
   SELECT
        Sum(Price) As Total,
        CONVERT(char(7), date, 120) As [year],
		Department 
    FROM
        dbo.Expenses
    WHERE
        --CONVERT(char(7), date, 120) Between '2017-01' And '2019-01'
    --And
        Department = 'Grocery' 
    GROUP BY
       CONVERT(char(7), date, 120),
	   Department 
	   )
SELECT
    Total,
    [year],Department as 'Department',
	   Concat(SUM(Total) OVER (),'€') As GrandTotal
FROM
    cte
WHERE
    [year] Is Not Null
;


Спасибо Вам за терпение и помощь,
С Благодарностью Е

2 Ответов

Рейтинг:
19

Patrice T

Цитата:
Это полный код, над которым я работаю, и я не знаю, где и как поместить номер формата в область суммы.

Короткий ответ: вы не форматируете число внутри SQL.
SQL возвращает сумму в виде числа, на данный момент форматирование отсутствует.
Форматирование выполняется только при преобразовании числа в строку или при печати.


Member 13410460

Спасибо за ваш ответ, но как мне тогда изменить формат номера? должен ли я работать над этим vb.net-что?

Patrice T

Если бы VB.net это язык вашего приложения, да, форматирование в печати в приложении VB.

Member 13410460

Спасибо, сэр, я сейчас попробую.

Member 13410460

Метка на моей форме показывает прямой результат от SQL Total sum , поэтому мне нужно отформатировать это число. Я пробовал разные способы, как это сделать в моей жизни. vb.net но я не смог найти ничего полезного.

Patrice T

Обновите свой вопрос с точной проблемой, которая у вас есть, и соответствующим кодом VB.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Member 13410460

Но мне не нужно менять вопрос , мне все еще нужна помощь относительно того, как отформатировать общее число формата sum в SQL.

Patrice T

Объясните точно, что вы пытаетесь сделать, с контекстом.
Ваше решение не обязательно является решением.
Кроме того, скажите, какой компонент графического интерфейса вы используете.

Member 13410460

Итак, я использую SQL, чтобы показать informaton в диаграмме, и теперь я хочу, чтобы, когда я иду к точке, показанной в диаграмме, vb.net диаграммы, чтобы показать мне описание того, что было куплено в тот день(то, что не указано в SQL-скрипте выше). Возможно, новый запрос, который я напишу, чтобы показать мне описание и подключиться к этому запросу через эти строки :

im thisPt As New PointF(CSng(Chartday.Серия("День").Очки(Результат.PointIndex).Увеличение),
CSng(Chartday.Серия("День").Очки(Результат.PointIndex).YValues(0)))

или здесь, как вы упомянули, но я не знаю, как его построить :

.X = thisPt.X + 1
.Y = thisPt.Y + 1
.Text = thisPt.Метод toString
Я работаю в VIsual studio 2015.
Спасибо за ваше терпение.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 13410460

Я сделал это, спасибо.

Рейтинг:
0

W∴ Balboos, GHB

Вы можете создать свою собственную функцию форматирования для SQL.

Внутри функции вы подсчитываете количество символов, в вашем случае, слева от десятичной дроби. Затем вы можете определить, является ли это >= 1000 (где вы бы добавили, чтобы начать нуждаться в разделителе тысяч) или просто вернуть значение.

Если вам нужно работать с ним, то вам нужно преобразовать его в строку, чтобы вы могли вставить свой разделитель тысяч.

Вот самая трудная часть для вас: выясните, как вы будете вставлять несколько разделителей в свою строку, когда каждый раз, когда вы добавляете один, длина строки меняется.

Теперь я сам сделал один из них для MS SQL:

SET @RVAL = CONVERT(VARCHAR, CAST(@number as Money), 1)

который использует встроенную функцию, чтобы справиться с этим за вас. Обратите внимание, что это приведение внутри преобразования, и мое приведение предназначено для стиля USA: (запятые между тысячами, точка для обозначения десятичного разрыва).