首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:条件插入/更新

问SQL:条件插入/更新
EN

Stack Overflow用户
提问于 2015-12-05 04:22:31
回答 3查看 6K关注 0票数 1

您好,我正在使用SAP HANA中类似于下表的表格:

代码语言:javascript
复制
Outcome  Value  Rating
Yes       0      null
Yes       20     null
No       -16     null

我需要有条件地填充Rating列,以便:

代码语言:javascript
复制
Value > 15; Rating = 'High"
-15 <= Value <= 15; Rating = 'Medium" 
Value < -15; Rating = 'Low"

有没有什么方法我可以使用INSERT或UPDATE语句来做这件事?

EN

回答 3

Stack Overflow用户

发布于 2015-12-05 04:31:22

如果您使用的是MSSQL,这是CASE语句的一个很好的用途:

代码语言:javascript
复制
RATING = CASE
            WHEN Value > 15 THEN 'High'
            WHEN Value BETWEEN -15 AND 15 THEN 'Medium'
            ELSE 'Low'
         END

这假设Value是一个整型类型,而不是其他类型。

INSERT语句示例:

代码语言:javascript
复制
DECLARE @Value int = 10,
        @Rating varchar(10)

SELECT  @Rating = CASE
                    WHEN @Value > 15 THEN 'High'
                    WHEN @Value BETWEEN -15 AND 15 THEN 'Medium'
                    ELSE 'Low'
                  END

INSERT INTO Table
    (Outcome, Value, Rating)
SELECT
    Outcome = 'Yes',
    Value = @Value,
    Rating = @Rating

和UPDATE

代码语言:javascript
复制
UPDATE  Table
SET     Rating = CASE
                    WHEN Value > 15 THEN 'High'
                    WHEN Value BETWEEN -15 AND 15 THEN 'Medium'
                    ELSE 'Low'
                 END
WHERE   UniqueID = 1
票数 0
EN

Stack Overflow用户

发布于 2015-12-05 04:36:27

您可以使用mysql例程来处理条件代码,以下是您正在查找的例程的示例。

代码语言:javascript
复制
CREATE FUNCTION  `myfunc` (`value` INT) RETURNS VARCHAR( 10 ) 
IF value >=15 THEN RETURN  'High';
ELSEIF value >= -15 AND value <15 THEN RETURN  'Medium';
ELSEIF value < -15 THEN RETURN  'Low';
END IF ;

您可以在mysql代码中使用此例程,如下所示

代码语言:javascript
复制
INSERT INTO `table_name` VALUES('Yes',5,myfunc(5))
票数 0
EN

Stack Overflow用户

发布于 2016-06-18 06:04:09

代码语言:javascript
复制
update table_name set Rating = case  when Value<-15 then 'low' when
(Value>-15 and Value<15) then 'medium' when Value>15 then 'high' end

使用case with update语句应该可以解决您的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34096801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档