SQL Query用于计算一行中值的出现次数

Ale*_*DPC 2 sql t-sql sql-server-2008

请参阅以下示例表.我想计算每一行的1.对于第一行,N_1必须是3,对于第二行,然后是1,然后是0.最后,我想将其合并到具有参数Table,Columns,Value的存储过程中.

CREATE TABLE Have 
( Col1 INT NOT NULL
, Col2 INT NOT NULL
, Col3 INT NOT NULL
, N_1 INT NULL 
)
INSERT Have (Col1, Col2, Col3)
    VALUES
     (1, 1, 1)
    ,(1, 1, 2)
    ,(1, 2, 2) 
    ,(2, 2, 2)
Run Code Online (Sandbox Code Playgroud)

Bin*_*nil 5

试试这个

select Col1, Col2, Col3,
case when col1 = 1 then 1 else 0 end +
case when col2 = 1 then 1 else 0 end +
case when col3 = 1 then 1 else 0 end as N_1
 from Have
Run Code Online (Sandbox Code Playgroud)

或者如果您需要更新表格

 update Have set N_1 = case when col1 = 1 then 1 else 0 end +
case when col2 = 1 then 1 else 0 end +
case when col3 = 1 then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)

然后你就可以表演了

select * from Have
Run Code Online (Sandbox Code Playgroud)