簡體   English   中英

何時基於空值產生值

[英]CASE WHEN to produce value based on null values

與桌子CARS

Make   | Model   | Color | Year
------- --------- ------- -----
Honda  | Accord  | Red   | 09
Nissan | Skyline | Blue  | 15
null   | Skyline | Red   | 15
Toyota | null    | Black | 15

我試圖在Make包含一個值但Model不包含時在Make列中生成字符串ERROR 我的陳述目前沒有任何結果

SELECT 
CASE
WHEN (SELECT Count(*) 
    FROM CARS
    WHERE a.make=make
    AND a.year=year
    AND a.color=color
    AND a.model = NULL) AND (SELECT Count(*) 
    FROM CARS
    WHERE a.year=year
    AND a.color=color
    AND a.make = make) > 1 THEN '**ERROR**'
ELSE a.make
END as make
FROM a.CARS

如果當make沒有任何值,但model有值時,您希望將ERROR作為make的值,那么這可能是您想要的:

SELECT 
    CASE 
       WHEN make IS NULL AND model IS NOT NULL 
       THEN 'ERROR' 
       ELSE make 
    END AS make, 
    model, color, year 
FROM cars;

也許我誤解了你的意圖。 您的問題似乎與您發布到其他答案的評論不同。

create table cars
(
make varchar(100) null,
model varchar(100) null,
color varchar(100) null,
year int null
);
insert cars(make,model,color,year) values ('honda','accord','red',2009);
insert cars(make,model,color,year) values ('nissan','skyline','blue',2015);
insert cars(make,model,color,year) values (null,'skyline','red',2015);
insert cars(make,model,color,year) values ('toyota',null,'black',2015);


select 
(case when c.make is null then 'ERROR' else c.make end) as make,
(case when c.model is null then 'ERROR' else c.model end) as model,
c.color, c.year
from cars c;

編輯

select c.make,c.model,c.color,c.year,
case when (   (c.make is null and c.model is not null) or (c.model is null and c.make is not null)    ) then 'ERROR' else '' end as col5
from cars c

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM