使用count进行case表达式的默认结果

时间:2017-03-22 14:03:55

标签: sql sql-server

我目前正在选择一个大的选择声明。我正在尝试通过案例部分。我目前已经设置了案例,其中“Brad”这个名称的单位是“英寸”。

如果我摆脱了单位,它将显示多个结果。在case语句中是否有一种默认方法,其中case返回'brad'的多个结果?如果只有1个结果,它会显示结果,否则如果结果超过1,则使用units ='inches'?

以下是工作案例陈述:

data have;
format id1 id2 $25. value 8.;
input id1 id2 value;
datalines;
a   b   10
a   c   2
a   d   6
b   a   5
c   a   3
c   d   7
;
run;

data reversed;
  set have;
  if id1 < id2 then do;
    value = value * -1;
    _id1 = id1;
    id1  = id2;
    id2  = _id1;
  end;
  drop _:;
run;

proc sort data=reversed;
  by id1 id2;
run;

data want;
  set reversed;
  by id1 id2;
  if first.id2 then _value=0;
  _value + value;
  if last.id2 then do;
    value = _value;
    if value < 0 then do;
      _id1 = id1;
      id1  = id2;
      id2  = _id1;
      value = value * -1;
    end;
    output;
  end;
  drop _:;
run;

这是我想要做的非工作半psedu版本:

And case when R.name = 'Brad' and R.units ='Inches' then 0 else 1 End = 1

无论它应该返回1个结果,如果名称'Brad'返回的值超过1,则默认为英寸

以下是声明如何连接的部分。

And case when Count(R.name ='Brad') > 1 then (R.name = 'Brad' and R.units = 'Inches') else (R.name = 'Brad' ) End

0 个答案:

没有答案