使用PLSQL根据条件减去列中的值
我相信这是一件简单的事情。 假设我有一张桌子:使用PLSQL根据条件减去列中的值,sql,oracle,subtraction,Sql,Oracle,Subtraction,我相信这是一件简单的事情。 假设我有一张桌子: CREATE TABLE kpi ( KPI_ID number(10) NOT NULL, KPI_NAME varchar2(50) NOT NULL, DAY_DATE DATE ); 我知道有人犯了一个错误,在创建表时,向所有大于100的值中添加了100。 我需要一个查询,其中从KPI_ID列中大于100的所有值中减去100。 我只能访问读取模式使用更新。您唯一拥有的数字是kpi_id,因此我假设这是您所指的列: update k
CREATE TABLE kpi
( KPI_ID number(10) NOT NULL,
KPI_NAME varchar2(50) NOT NULL,
DAY_DATE DATE
);
我知道有人犯了一个错误,在创建表时,向所有大于100的值中添加了100。
我需要一个查询,其中从KPI_ID列中大于100的所有值中减去100。
我只能访问读取模式使用更新。您唯一拥有的数字是kpi_id,因此我假设这是您所指的列:
update kpi
set kpi_id = kpi_id - 100
where kpi_id > 100;
如果您只需要查询:
select kpi_id - 100 as kpi_id, kpi_name, day_date
from kpi;
使用更新。您唯一拥有的数字是kpi_id,因此我假设这是您所指的列:
update kpi
set kpi_id = kpi_id - 100
where kpi_id > 100;
如果您只需要查询:
select kpi_id - 100 as kpi_id, kpi_name, day_date
from kpi;
有人犯了一个错误,在创建表时将100添加到所有大于100的值中。。。我需要价值观小于100的应保持完整,大于或等于100的应减少100
您需要有条件地对KPI_ID应用调整。为此,我们使用案例语句:
select case when (kpi_id - 100) >= 100 then
kpi_id - 100
else
kpi_id
end as kpi_id
, kpi_name
, day_date
from kpi
;
在最初的问题中,您说KPI_ID列中的所有值都大于100,但在最近的评论中,您说大于或等于100。我修改后的解决方案实现了您评论中的算法,前提是最近声明的需求总是正确的
有人犯了一个错误,在创建表时将100添加到所有大于100的值中。。。我需要价值观小于100的应保持完整,大于或等于100的应减少100
您需要有条件地对KPI_ID应用调整。为此,我们使用案例语句:
select case when (kpi_id - 100) >= 100 then
kpi_id - 100
else
kpi_id
end as kpi_id
, kpi_name
, day_date
from kpi
;
在最初的问题中,您说KPI_ID列中的所有值都大于100,但在最近的评论中,您说大于或等于100。我修改后的解决方案实现了您评论中的算法,前提是最近声明的要求总是正确的。从KPI_ID列中大于100的所有值中减去100的查询
SELECT KPI_ID-100 as KPI_ID,KPI_NAME,DAY_DATE FROM kpi WHERE KPI_ID >100
从KPI_ID列中大于100的所有值中减去100的查询
SELECT KPI_ID-100 as KPI_ID,KPI_NAME,DAY_DATE FROM kpi WHERE KPI_ID >100
最后,所需要的只是一份案例陈述:
案例当KPI_ID>100时,则KPI_ID-100否则KPI_ID以KPI_ID结束。最后需要的是案例陈述:
当KPI_ID>100时,则KPI_ID-100否则KPI_ID以KPI_ID结尾@NikitaPronin。您将使用select查询。但是如果数据是错误的,数据应该被修正。@NikitaPronin。您将使用select查询。但如果数据错误,则应修复数据。isnull不是Oracle函数。标记为[oracle]的问题需要该平台的解决方案。使用[sql]标记仅仅表明这个问题与编写数据库查询有关;这并不意味着问题是关于MS SQL Server的,[SQL Server]标记表明了这一点。哦,很抱歉,我错过了它。isnull不是Oracle函数。标记为[oracle]的问题需要该平台的解决方案。使用[sql]标记仅仅表明这个问题与编写数据库查询有关;这并不意味着问题是关于MS SQL Server的,[SQL Server]标记表明了这一点。哦,对不起,我没有找到它。我需要值小于100的值应保持不变,大于或等于100的值应减少100I小于100的应保持完整,大于或等于100的应减少100