如果客户每次最多只能使用1000个里程点,如何编写显示以下内容的SQL语句?
我是SQL新手,一直在玩弄它。然而,我偶然发现了一个我似乎无法解决的问题: 如果客户每次最多只能使用1000个里程点,我如何编写SQL语句来显示他们的编号、名称和此时的可用里程(不能超过1000) 下表是我用来回答这个问题的 我正在使用SQL*Plus。任何帮助都将不胜感激!我怀疑这里可能会用到最大的(totalmiliness)函数,但我还没有弄清楚到底是如何使用的如果客户每次最多只能使用1000个里程点,如何编写显示以下内容的SQL语句?,sql,oracle,Sql,Oracle,我是SQL新手,一直在玩弄它。然而,我偶然发现了一个我似乎无法解决的问题: 如果客户每次最多只能使用1000个里程点,我如何编写SQL语句来显示他们的编号、名称和此时的可用里程(不能超过1000) 下表是我用来回答这个问题的 我正在使用SQL*Plus。任何帮助都将不胜感激!我怀疑这里可能会用到最大的(totalmiliness)函数,但我还没有弄清楚到底是如何使用的 SQL> select * from customers; CNU CNAME ACCOUNTBALANCE
SQL> select * from customers;
CNU CNAME ACCOUNTBALANCE TOTALMILEAGE
--- ---------- -------------- ------------
101 Andy 85.25 2152
102 Betty 170 108
103 Cindy -55.13 3
104 David 1308.02 5510
105 Ellen 99.77 11150
106 Frank -.02 80
您可以使用
CASE
语句返回可用英里数,如果他们有这么多或更多,则返回1000
,如果他们有更少,则返回余额:
SELECT CNU,
CNAME,
ACCOUNTBALANCE,
TOTALMILEAGE,
CASE WHEN COALESCE(TOTALMILEAGE, 0) > 1000
THEN 1000
ELSE COALESCE(TOTALMILEAGE, 0) END AS USABLEMILEAGE
FROM customers
您可以使用
CASE
语句返回可用英里数,如果他们有这么多或更多,则返回1000
,如果他们有更少,则返回余额:
SELECT CNU,
CNAME,
ACCOUNTBALANCE,
TOTALMILEAGE,
CASE WHEN COALESCE(TOTALMILEAGE, 0) > 1000
THEN 1000
ELSE COALESCE(TOTALMILEAGE, 0) END AS USABLEMILEAGE
FROM customers
你太棒了,非常感谢你,工作得很有魅力!我一整天都在疯狂地摆弄“最伟大的”一词;似乎我尝试了错误的命令。请注意空值:)@Joe我想说的是,表的最佳设计实践是使平衡列不可为空,但是的,我们也可以添加逻辑来处理空值。您太棒了,非常感谢您——工作得很有魅力!我一整天都在疯狂地摆弄“最伟大的”一词;似乎我尝试了错误的命令。请注意空值:)@Joe我想说,表的最佳设计实践是使平衡列不可为空,但我们也可以添加逻辑来处理空值。