SQL: динамический порядок BY для валюты Colum с использованием номера столбца - PullRequest
0 голосов
/ 27 июня 2019

У нас есть динамический запрос в базе данных, как показано ниже, и мы передаем столбец Number для сортировки данных, но он не работает должным образом из-за некоторого формата чисел и валюты.

Ниже приведен пример запроса.

 Select * from (
SELECT 
dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptlc.Value),'N')) AS [Planned] 
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptlc.Value)),'N')) AS [To Be Planned]   
,dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptla.Value),'N')) AS [Actual]   
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptla.Value)),'N')) AS [Remaining] 
from XPV.MyFIlterView d1 
) as FilteredView
ORDER BY cast(replace(3,'$','') as float) 

Мы хотим сделать заказ, используя номер столбца для вышеприведенного запроса, но он не работает, он работает, используя имя столбца, не могли бы вы предложить способ.

1 Ответ

0 голосов
/ 27 июня 2019

Попробуйте

Select * from (
SELECT 
dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptlc.Value),'N')) AS [Planned] 
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptlc.Value)),'N')) AS [To Be Planned]   
,dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptla.Value),'N')) AS [Actual]   
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptla.Value)),'N')) AS [Remaining] 
from XPV.MyFIlterView d1 
) as FilteredView
ORDER BY 1,4 DESC

Вы также можете использовать с clouse

WITH FilteredView AS (
SELECT 
dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptlc.Value),'N')) AS [Planned] 
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptlc.Value)),'N')) AS [To Be Planned]   
,dbo.FormatAmountforCustomQuery(FORMAT(SUM(pcptla.Value),'N')) AS [Actual]   
,dbo.FormatAmountforCustomQuery(FORMAT((REPLACE(REPLACE([Committed],',',''),'$','') - SUM(pcptla.Value)),'N')) AS [Remaining] 
from XPV.MyFIlterView d1 
)



SELECT * FROM FilteredView
ORDER BY 1,4 DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...