3

我很想写一些 SQL 来实现以下目标。

“显示每日结果,详细说明报价数量及其相关票价的总和,其中票价不为空且 QuoteOrBooking 等于 '报价'”。

因此,鉴于下表,我正在寻找以下结果:

Date        Quotes  TotalValue
2013-08-06  3       228.00
2013-08-07  2       80.00

如您所见,Fare 是一个(相当混乱的)字符串字段,因此我需要将其清理并转换为小数。这是我坚持的一点。下面的示例显示了问题的严重程度(即,如果我可以让它适用于这些数据,它将适用于整个数据库)。

我想我搞砸了我对 REPLACE 的使用,我不确定在尝试将字符串转换为小数时是否可以接受句点 (.) 的存在。

+-------------+------------+----------------+
| BookingDate | Fare       | QuoteOrBooking |
+-------------+------------+----------------+
| 2013-08-06  | NULL       | Quote          |
| 2013-08-06  | 21         | Booking        |
| 2013-08-06  | 97         | Quote          |
| 2013-08-06  | £131       | Quote          |
| 2013-08-07  | 21.00      | Quote          |
| 2013-08-07  | 59.        | Quote          |
| 2013-08-07  | NULL       | Quote          |
| 2013-08-07  | 97         | Booking        |
+-------------+------------+----------------+

非常感激任何的帮助。

非常感谢,

克里斯。

4

1 回答 1

6

看起来这MONEY对我来说都是:

SELECT CAST(Fare AS MONEY)
FROM Table1

演示:SQL 小提琴

完整查询:

SELECT  BookingDate
       ,COUNT(*)
       ,SUM(CAST(Fare AS MONEY))
FROM Table1
WHERE QuoteOrBooking = 'Quote' 
     AND Fare IS NOT NULL
GROUP BY BookingDate
ORDER BY BookingDate

或者:

SELECT  BookingDate
       ,COUNT(Fare)
       ,SUM(CAST(Fare AS MONEY))
FROM Table1
WHERE QuoteOrBooking = 'Quote' 
GROUP BY BookingDate
ORDER BY BookingDate
于 2013-09-19T19:18:47.370 回答