Добавление доллара к числам с помощью CONVERT (), но все равно сортировка по числу - PullRequest
0 голосов
/ 21 мая 2019

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

Моя текущая попытка:

SELECT OrderLine.OrderID, Employee.FirstName AS "Employee First Name",
    Employee.LastName AS "Employee Last Name", 
    '$' + CONVERT(NVARCHAR, SUM((CommissionRate * ((Quantity * Price) * (1 - Discount)))), 1) AS "Total Commission"
FROM OrderLine INNER JOIN [Order] ON Orderline.OrderID = [Order].OrderID
    INNER JOIN Employee ON [Order].EmployeeID = Employee.EmployeeID
GROUP BY OrderLine.OrderID, Employee.FirstName, Employee.LastName
ORDER BY 'Total Commission' DESC

Вывод выглядит как строка, и моя первоначальная мысль была добавить:

ORDER BY SUM((CommissionRate * ((Quantity * Price) * (1 - Discount))))

Но я подумал, что есть более простой способ.

Ранее я рассматривал следующие вопросы по стеку:

Как отформатировать число с запятыми в T-SQL?

ORDER BY для значений валюты

Output:

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

Псевдокод должен вас туда доставить.

SELECT 
    '$' + CONVERT(NVARCHAR, <value>) AS 'Total Commission'
FROM table
order by <value> desc
1 голос
/ 21 мая 2019

Я большой поклонник использования общих табличных выражений.Вот так ...

WITH CTE AS (
    SELECT OrderLine.OrderID, Employee.FirstName AS "Employee First Name",
    Employee.LastName AS "Employee Last Name", 
    CONVERT(NVARCHAR, SUM((CommissionRate * ((Quantity * Price) * (1 - Discount)))), 1) AS "Total Commission"
    FROM OrderLine INNER JOIN [Order] ON Orderline.OrderID = [Order].OrderID
    INNER JOIN Employee ON [Order].EmployeeID = Employee.EmployeeID
GROUP BY OrderLine.OrderID, Employee.FirstName, Employee.LastName
)

SELECT 
    CTE.[Employee First Name], 
    CTE.[Employee Last Name], 
    '$' + CTE.[Total Commission] as Total
FROM CTE
ORDER BY CTE.Total Commission DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...