SQL:条件插入/更新

时间:2015-12-04 20:22:31

标签: sql hana

您好我正在使用SAP HANA中的下表:

Outcome  Value  Rating
Yes       0      null
Yes       20     null
No       -16     null

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

Value > 15; Rating = 'High"
-15 <= Value <= 15; Rating = 'Medium" 
Value < -15; Rating = 'Low"

无论如何我可以使用INSERT或UPDATE语句执行此操作吗?

3 个答案:

答案 0 :(得分:0)

如果您使用MSSQL,则可以很好地使用CASE语句:

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

这假设Value是int而不是其他类型。

INSERT声明的示例:

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

UPDATE  Table
SET     Rating = CASE
                    WHEN Value > 15 THEN 'High'
                    WHEN Value BETWEEN -15 AND 15 THEN 'Medium'
                    ELSE 'Low'
                 END
WHERE   UniqueID = 1

答案 1 :(得分:0)

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

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代码中使用这个例程,比如

INSERT INTO `table_name` VALUES('Yes',5,myfunc(5))

答案 2 :(得分:0)

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

使用带有更新语句的案例应该可以解决您的问题