Sql 如何计算数据中出现的次数(在多个字段中)

Sql 如何计算数据中出现的次数(在多个字段中),sql,db2,Sql,Db2,例如: 数据库中有一个数据(每个数字位于不同的字段中): 1 | 2 | 2 | 3 | 4 | 5 | 2 现在我怎样才能得到数字2的出现次数? 请帮帮我,谢谢 您可以使用CASE表达式: 您想要每行的发生次数吗?还是在整个表格中?我想在整个表格中选择所有出现的行2次以上3次这超出了您原来的问题,sagi的答案是正确的。他/她的答案提供了每行的计数,但您可以在CalculatedColumn>3的地方进行计算谢谢@sagi,我解决了它。感谢您回答我的问题,我尝试了您的方法并得到了错误:DB2

例如: 数据库中有一个数据(每个数字位于不同的字段中):

1 | 2 | 2 | 3 | 4 | 5 | 2
现在我怎样才能得到数字2的出现次数? 请帮帮我,谢谢

您可以使用CASE表达式:


您想要每行的发生次数吗?还是在整个表格中?我想在整个表格中选择所有出现的行2次以上3次这超出了您原来的问题,sagi的答案是正确的。他/她的答案提供了每行的计数,但您可以在CalculatedColumn>3的地方进行计算谢谢@sagi,我解决了它。感谢您回答我的问题,我尝试了您的方法并得到了错误:DB2SQL错误:SQLCODE=-206,SQLSTATE=42703,SQLERRMC=AS,DRIVER=4.19.49。2[Code:-727,SQL状态:56098]DB2SQL错误:SQLCODE=-727,SQLSTATE=56098,SQLERRMC=2-206;42703;如,DRIVER=4.19.49这是我的调用方式:选择t*,当t.f1wr_count=0时为CASE,当t.f2wr_count=0时为1 ELSE 0 END+当t.f3wr_count=0时为CASE,当t.f4wr_count=0时为1 ELSE 0 END+当t.f5wr_count=0时为CASE,当t.f6wr_count=0时为1 ELSE 0 END+时为CASEt、 f7wr_count=0然后1 ELSE 0 END+作为H032的Calculated列。SCC_ROLLDATA t删除最后一个+符号,这是一个额外的@bTher->ELSE 0 END+作为Calc。我可以得到整个表中Calculated Column>3的某一行吗?@sagic为什么不试试,是的。
SELECT t.*,
       CASE WHEN t.Col1 = 2 THEN 1 ELSE 0 END +
       CASE WHEN t.Col2 = 2 THEN 1 ELSE 0 END +
       CASE WHEN t.Col3 = 2 THEN 1 ELSE 0 END +
       .... as CalculatedColumn
FROM YourTable t