如果还有精选案例?

时间:2017-09-02 11:49:22

标签: sql sql-server

我可以在Select情况下使用If else吗?

Update Tab
set Quantity2 = a.Quantity
from
(
    select 
    case when D.Quantity1 > Tab.Quantity2
    then D.Quantity1 ------------> (if and else here)
    else Tab.Quantity3
    end 
    as Quantity
    from Dab D 
    inner join Tab
    on 
    D.ID = Tab.ID
)a

我想在SELECT CASE WHEN部分中有一个IF ELSE块。可能吗?或者还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

您的基本查询应该更像这样:

b

如果需要条件表达式,可以在b子句中添加PrevNode

编辑:

如果您想检查多个条件,只需将它们添加到e

即可
public void swap(DoubleLinkedList swapList, Node b, Node f) {
    Node a = b.PrevNode;
    Node c = b.NextNode;
    Node e = f.PrevNode;
    Node g = f.NextNode;


    if(swapList.First == b) {
        swapList.First = f;
    } else if(swapList.First == f) {
        swapList.First = b;
    }

    if(a != null) {
        a.NextNode = f;
    }
    f.PrevNode = a;
    f.NextNode = c;
    if(c != null) {
        c.PrevNode = f;
    }

    if(e != null) {
        e.NextNode = b;
    }
    b.PrevNode = e;
    b.NextNode = g;
    if(g != null) {
        g.PrevNode = b;
    }

    if(swapList.Last == b) {
        swapList.Last = f;
    } else if(swapList.Last == f) {
        swapList.Last = b;
    }
}

答案 1 :(得分:1)

你可以在陈述时嵌套案例。

将内部比较放在外部语句的case when部分内的新then语句中。

select 
Table2.id,
case when Table2.switch=1
then
(
  case when Table1.val1>Table1.val3
  then Table1.val1
  else Table1.val3
  end
)
else
(
 case when Table1.val2>Table1.val3
 then Table1.val2
  else Table1.val3
 end
)
end out
from Table2
inner join Table1 on Table2.id=Table1.id

http://sqlfiddle.com/#!6/e0086/2