hi 各位大大
这里碰到一个对于我而言的难题,希望大家如果可以的话帮助一下
首先我有1个表
表A:单号 价格一 价格二 价格三 价格四 总价
我要实现的功能是:一句COUNT(*) 语句 实现
当单号<1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.2当单号>=1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.3需要在一句SELECT语句中实现,求解法。谢谢了!
这里碰到一个对于我而言的难题,希望大家如果可以的话帮助一下
首先我有1个表
表A:单号 价格一 价格二 价格三 价格四 总价
我要实现的功能是:一句COUNT(*) 语句 实现
当单号<1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.2当单号>=1000 的时候 总价=(价格一 + 价格二 + 价格三 + 价格四)*1.3需要在一句SELECT语句中实现,求解法。谢谢了!
解决方案 »
- 急需Oracle10 patch 5391050 for Windows Server 2003 for 64-Bit Itanium2,谢谢!
- 问下用户间互相访问
- 删除分区表后如何删除分区
- Oracle10g有SQLPlus Worksheet么?
- 请教高手:关于分母为0的问题,如何解决
- 求救,在UNIX下,如何写脚本,从远程数据库中导数据,远程数据库中的用户名密码,数据库SID我都知道了,我该如何做?
- 过程如何加密,plsql中操作一个库时,打开一个过程看到的就是一段红色文字,提示不可见
- oracle 语句中'or','and'是否可以同时出现
- 这个包有什么错误吗
- 各位没休息在老师谁来看看我错在那里了
- 升级timesten11小版本需要打哪些补丁
- 求助:如何C++编程实现数据库存储与缓冲管理器
* (case
when 单号<1000 then 1.2
else 1.3
end
);不知道是不是这个意思
还是简单的写了下WITH t AS (
SELECT 900 单号,1 价格一,2 价格二,3 价格三,4 价格四 FROM dual
UNION ALL
SELECT 1100 单号,1 价格一,2 价格二,3 价格三,4 价格四 FROM dual
)
SELECT t.*,CASE WHEN 单号<1000 THEN (价格一+价格二+价格三+价格四)*1.2 WHEN 单号>=1000 THEN (价格一+价格二+价格三+价格四)*1.3 END 总价
FROM t;
--这里是不需要用到count()的,以下即可
--测试表以及测试数据
create table 表A
(
单号 number,
价格一 number,
价格二 number,
价格三 number,
价格四 number,
总价 number
)insert into 表A values(1001,50,20,30,100,null);
insert into 表A values(888,50,20,30,100,null);--我的查询语句
select
单号,
价格一,
价格二,
价格三,
价格四,
(case
when 单号>=1000
then (价格一 + 价格二 + 价格三 + 价格四)*1.3
when 单号<1000
then (价格一 + 价格二 + 价格三 + 价格四)*1.2
end) as 总价
from 表A
--查询结果
1001 50 20 30 100 260
888 50 20 30 100 240
--你的这个需求不需要用到count函数的
--以下是我的做法
create table 表A
(
单号 number,
价格一 number,
价格二 number,
价格三 number,
价格四 number,
总价 number
)insert into 表A values(1001,50,20,30,100,null);
insert into 表A values(888,50,20,30,100,null);--查询
select
单号,
价格一,
价格二,
价格三,
价格四,
(case
when 单号>=1000
then (价格一 + 价格二 + 价格三 + 价格四)*1.3
when 单号<1000
then (价格一 + 价格二 + 价格三 + 价格四)*1.2
end) as 总价
from 表A
--查询结果
1001 50 20 30 100 260
888 50 20 30 100 240