我想从我的表中显示总价格的输出为' 20.00美元'或者' 40欧元'分别为美国和欧元。 我厌倦了以下代码并得到了缺少的表达式错误。 如何将其转换为指定的格式? 列的数据类型'价格'是号码。 我的代码就在这里..
select convert(varchar(50),convert(money, coalesce(sum(nvl(CASE
WHEN (typ=27 and l.tyt ='USD') THEN 'USD' + PRICE
WHEN (typ=27 and l.tyt='EURO') THEN 'EURO'+ PRICE
END,0)),0)),1) as Total from transactions;
提前致谢!
答案 0 :(得分:0)
这个表达有几个问题。 1)将字符串值(' USD' EURO')添加到数值(PRICE),2)NVL()在不同的数据类型上,3)SUM()对字符串数据。任何这些都可能是错误的原因。
如果表存储的是不同的计价价格,则无法将它们排成一行 - 您希望在结果中使用哪一个(欧元或美元)。如果你想要两个行都有,那么下面的代码应该有效(请注意,在你的原始语句中,别名l是未定义的,所以这不太可能有效):
SELECT 'USD', Sum(price) as Total
FROM transactions
WHERE typ=27 and tyt ='USD'
UNION ALL
SELECT 'EURO', Sum(price) as Total
FROM transactions
WHERE typ=27 and tyt ='EURO'
或只是
SELECT tyt, Sum(price) as Total
FROM transactions
WHERE typ=27
GROUP BY tyt