0

我有 SQL Server 2012 并想创建一个执行以下操作的视图:

我的桌子有:

MovType | Qty
In      | 200
Out     | 10

现在我想创建一个基本上遍历整个表的视图,并取决于MovTypeInOut分配给一个特殊的动态列。

所以基本上我需要:

InQty | OutQty
200   | 0
  0   | 10

我知道这可以用 来完成CASE,但不确定代码。其次,速度是一个重要因素,那么有没有什么特别的方法可以以最少的开销做到这一点?

提前感谢大家!

4

1 回答 1

0

是的,你可以使用CASE,它应该是有效的。case 语句不需要像 a 那样从磁盘读取JOIN,它是一个非常简单的命令,不太可能导致性能问题。

SELECT CASE WHEN MovType='In' THEN Qty Else 0 End AS InQty,
       CASE WHEN MovType='Out' THEN Qty Else 0 End AS OutQty
FROM dbo.Table1

http://sqlfiddle.com/#!6/d507f/3/0

于 2013-04-18T20:02:36.787 回答