计算存在多少数据[SQL]

时间:2014-08-18 12:36:47

标签: sql oracle count row

我不确定这个问题是否已经被其他人提出或者尚未提出,因为这实际上很容易,但我的头脑仍然无法找到摆脱这个问题的方法。

这就像我们在材料上采样多少次一样。

SELECT
  TABLE01.MATERIAL_NO,
  TABLE01.Sample_Tempt1,
  TABLE01.Sample_Tempt2,
  TABLE01.Sample_Tempt3,
  TABLE01.Sample_Tempt4,
  TABLE01.Sample_Tempt5
FROM
  TABLE01

是否可以创建另一列来显示sample_tempt次数?
我的意思是,如果tempt1 tempt2数据存在,则列显示2,当tempt2,tempt4和tempt5数据存在时,列显示3.依此类推。
谢谢你帮助我^^
样品:

Material no | Sample_Tempt1 | Sample_Tempt2 | Sample_Tempt3 | Sample_Tempt4 | Sample_Tempt5 | 
PO1025           120            150                               102                        
PO1026                          122

对于PO1025,我想创建一个新的列,生成" 3"因为存在的样本数据只有3,对于PO1026,我希望它生成" 1"因为存在的样本数据仅为" 1"。很简单吧?

1 个答案:

答案 0 :(得分:0)

如果“by exists”表示“值不是NULL”,那么您可以将每行中的非NULL值的数量计算为:

SELECT t1.MATERIAL_NO,
       t1.Sample_Tempt1, t1.Sample_Tempt2, t1.Sample_Tempt3, t1.Sample_Tempt4, t1.Sample_Tempt5,
       ((case when t1.sample_temp1 is not null then 1 else 0 end) +
        (case when t1.sample_temp2 is not null then 1 else 0 end) +
        (case when t1.sample_temp3 is not null then 1 else 0 end) +
        (case when t1.sample_temp4 is not null then 1 else 0 end) +
        (case when t1.sample_temp5 is not null then 1 else 0 end)
       ) as NumTempts
FROM TABLE01 t1;

请注意,我引入了一个表别名。这使查询更容易编写和阅读。