我有SQL Server 2012,并希望创建一个执行以下操作的视图:
我的桌子有:
MovType | Qty
In | 200
Out | 10
现在我想创建一个基本上遍历整个表的视图,具体取决于MovType
是In
还是Out
分配给特殊的动态列。
基本上我需要:
InQty | OutQty
200 | 0
0 | 10
我知道可以使用CASE
完成此操作,但不确定代码。其次速度是一个重要的因素,所以有没有特别的方法可以做到这一点,最小的开销可能?
提前感谢所有人!
答案 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