我不确定这个问题是否已经被其他人提出或者尚未提出,因为这实际上很容易,但我的头脑仍然无法找到摆脱这个问题的方法。
这就像我们在材料上采样多少次一样。
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"。很简单吧?
答案 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;
请注意,我引入了一个表别名。这使查询更容易编写和阅读。