要计算符合条件列表的行中的项目数,并将结果放置在该行的errorcnt列中。实际数据有15个条件和一百列。我认为此示例应说明我的追求。
CREATE TABLE #MyList
(
Item1 NVARCHAR(100),
Item2 NVARCHAR(100),
date1 DATE,
Date2 date,
errorcnt int
)
INSERT INTO #MyList
(
Item1,
Item2,
Date1,
Date2
)
VALUES
('Dog','Puppy', '2020-01-01', '2030-01-01'),
('Cat', 'Kitten', '2020-02-02', '2020-03-03')
Run Code Online (Sandbox Code Playgroud)
要计数的样本条件:
When Item1 <> Dog, OR
when Item2 <> puppy, OR
when Date2>date1
Run Code Online (Sandbox Code Playgroud)
每个记录都应计算在内,因此在记录2中,
Item1 <> Dog = 1
Item2 <> puppy = 1
Date 2 > Date 1 = 1
Total 3 errors.
Run Code Online (Sandbox Code Playgroud)
第2行的输出为:
Cat, Kitten, 2020-02-02, 2020-03-03, 3
Run Code Online (Sandbox Code Playgroud)
新手,不知道如何做到最好。
使用case表达式:
select ml.*,
( (case when Item1 <> 'Dog' then 1 else 0 end) +
(case when when Item2 <> 'puppy' then 1 else 0 end) +
(case when Date2 > date1 then 1 else 0 end)
) as total_errors
from #mylist ml;
Run Code Online (Sandbox Code Playgroud)