我有一张表,其中包含两个国家/地区ID以及其他一些列
作为类似
的示例Table(Id int,Title varchar(250), WebCountryId int, CountryId int)
网络国家/地区ID 1000适用于英国,CountryId = 5适用于英国。 (同样,countryid = 1是未知的,视为英国)。 (两个同居者来自两个不同的数据库,这些数据库有自己的国家列表) 我有一个使用此表的视图,我正在尝试创建一个字段来确定该行是否为英国。
这就是我现在所拥有的,但这一点可以在视图中使用
SELECT CountryId,WebCountryId,
(CASE WHEN (T.WebCountryId IS NULL AND T.CountryId IS NULL) THEN 1
WHEN (T.WebCountryId IS NOT NULL AND T.WebCountryId <> 1000) THEN 0
WHEN (T.CountryId IS NOT NULL AND Enquiry.CountryId NOT in(1,5)) THEN 0
WHEN (T.WebCountryId IS NULL AND T.CountryId in(2,5)) THEN 1 END)as Uk
FROM Table T
有没有其他方法可以在不使用case
的情况下实现此目的?
答案 0 :(得分:1)
您可以使用UNION
并在两组之间划分逻辑。
SELECT T.CountryId
,T.WebCountryId
,0 AS Uk
FROM Table_T AS T
WHERE ( T.WebCountryId IS NOT NULL AND T.WebCountryId <> 1000)
OR ( T.CountryId IS NOT NULL AND Enquiry.CountryId NOT IN ( 1, 5 ))
UNION ALL
SELECT T.CountryId
,T.WebCountryId
,1 AS Uk
FROM Table_T AS T
WHERE ( T.WebCountryId IS NULL AND T.CountryId IS NULL )
OR ( T.WebCountryId IS NULL AND T.CountryId IN ( 2, 5 ))
答案 1 :(得分:0)
我会修复数据,以便您的查询可以使用简单的逻辑(如果可能的话)。否则你所拥有的就是你将要拥有的东西。