另一个表列中多个值条件的SQL命令错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了另一个表列中多个值条件的SQL命令错误相关的知识,希望对你有一定的参考价值。
我们要添加一个新列,其值取决于很多条件
例如,像这样的箱号表,有很多箱号引用不同的国家/地区
Start_Bin End_Bin Country_Code
---------------------------------------
4976999 4971000 US
4986999 4990000 UK
4920000 4929999 US
并且我们想在表中创建一个新的国家/地区代码列,其条件基于此表
这是我们的SQL代码,SQL Server不允许:(
ALTER TABLE temp.we_are_foreigners__table
ADD COLUMNS
CASE
WHEN
(CAST(temp.we_are_foreigners__table.accountno AS int)
>= CAST(temp.visa_country_classify_table.start_binnumber AS int)
AND CAST(temp.we_are_foreigners__table.accountno AS int)
<= CAST(temp.visa_country_classify_table.end_binnumber AS int) )
THEN temp.visa_country_classify_table.country_code
WHEN
(CAST(temp.we_are_foreigners__table.accountno AS int)
>= CAST(temp.mastercard_country_classify_table.start_binnumber AS int)
AND CAST(temp.we_are_foreigners__table.accountno AS int)
<= CAST(temp.mastercard_country_classify_table.end_binnumber AS int) )
THEN temp.mastercard_country_classify_table.country_code
END As Country_String
FROM
temp.visa_country_classify_table,
temp.mastercard_country_classify_table,
temp.we_are_foreigners__table
;
执行此操作的正确SQL命令是什么,有什么问题?
答案
您需要从更新中分离出alter table。您还需要指定如何联接表。
这里是一个示例,假定连接条件:
ALTER Table temp.we_are_foreigners__table add Country_String varchar(100)
update f set Country_string=
CASE
WHEN
CAST(f.accountno AS int) >= CAST(v.start_binnumber AS int)
AND CAST(f.accountno AS int) <= CAST(v.end_binnumber AS int)
THEN m.country_code
WHEN
CAST(f AS int) >= CAST(m.start_binnumber AS int)
AND CAST(f.accountno AS int) <= CAST(m.end_binnumber AS int)
THEN m.country_code
END
FROM temp.we_are_foreigners__table f
join temp.visa_country_classify_table v on v.countryID=f.CountryID
join temp.mastercard_country_classify_table m on m.countryID=f.CountryID
以上是关于另一个表列中多个值条件的SQL命令错误的主要内容,如果未能解决你的问题,请参考以下文章