Sql 更新查询错误的CASE语句
我正在使用CASE语句更新一些表数据,但它的给定错误在WHEN和THEN条件中是错误的。任何人都可以知道这有什么问题。这是我的代码Sql 更新查询错误的CASE语句,sql,sql-server-2008,case,Sql,Sql Server 2008,Case,我正在使用CASE语句更新一些表数据,但它的给定错误在WHEN和THEN条件中是错误的。任何人都可以知道这有什么问题。这是我的代码 UPDATE TBL_AMOUNT_SETTING SET CALCULATED_AMOUNT = CASE WHEN EXISTS(SELECT COUNT(*) FROM TBL_GAME_PRICE_BY_DATE WHERE
UPDATE TBL_AMOUNT_SETTING
SET CALCULATED_AMOUNT =
CASE
WHEN EXISTS(SELECT COUNT(*)
FROM TBL_GAME_PRICE_BY_DATE
WHERE GAMEPRICE_DATE = CONVERT(DATE,GETDATE()))
THEN
(SELECT GAMEPRICE
FROM TBL_GAME_PRICE_BY_DATE
WHERE GAMEID = 10
AND GAMEPRICE_DATE = CONVERT(DATE,GETDATE()))
ELSE NULL
END
WHERE REF_GAME_ID = 10
您的sql是错误的,您错过了case关键字 模板如下:
select case
when exists (
...
)
then ...
else ...
end
where ...
更新时相同:
update tbl set field =
case
when exists (
...
)
then ...
else ...
end
where ...
您的sql是错误的,您错过了case关键字 模板如下:
select case
when exists (
...
)
then ...
else ...
end
where ...
更新时相同:
update tbl set field =
case
when exists (
...
)
then ...
else ...
end
where ...
您问题的原始问题在
更新
查询中缺少案例
关键字
我认为更好的方法是分离update语句的过程。由于您的子查询
没有一个是相关的,所以您可以试试这个
这比你所做的更具可读性
DECLARE @gameprice NUMERIC(22, 6)
IF EXISTS(SELECT Count(*)
FROM tbl_game_price_by_date
WHERE gameprice_date = CONVERT(DATE, Getdate()))
SELECT @gameprice = gameprice
FROM tbl_game_price_by_date
WHERE gameid = 10
AND gameprice_date = CONVERT(DATE, Getdate())
UPDATE tbl_amount_setting
SET calculated_amount = @gameprice
WHERE ref_game_id = 10
您问题的原始问题在
更新
查询中缺少案例
关键字
我认为更好的方法是分离update语句的过程。由于您的子查询
没有一个是相关的,所以您可以试试这个
这比你所做的更具可读性
DECLARE @gameprice NUMERIC(22, 6)
IF EXISTS(SELECT Count(*)
FROM tbl_game_price_by_date
WHERE gameprice_date = CONVERT(DATE, Getdate()))
SELECT @gameprice = gameprice
FROM tbl_game_price_by_date
WHERE gameid = 10
AND gameprice_date = CONVERT(DATE, Getdate())
UPDATE tbl_amount_setting
SET calculated_amount = @gameprice
WHERE ref_game_id = 10
试试看试试看
SET computed\u AMOUNT=WHEN
CASE关键字在哪里?请在问题中添加错误消息。SET computed\u AMOUNT=WHEN
CASE关键字在哪里?请在问题中添加错误消息。