SQL Server:根据其他列数据将数据从一列分离为两列

时间:2013-04-18 19:56:56

标签: sql-server

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

我的桌子有:

MovType | Qty
In      | 200
Out     | 10

现在我想创建一个基本上遍历整个表的视图,具体取决于MovTypeIn还是Out分配给特殊的动态列。

基本上我需要:

InQty | OutQty
200   | 0
  0   | 10

我知道可以使用CASE完成此操作,但不确定代码。其次速度是一个重要的因素,所以有没有特别的方法可以做到这一点,最小的开销可能?

提前感谢所有人!

1 个答案:

答案 0 :(得分:0)

是的,你可以使用CASE,它应该是高效的。 case语句不需要像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