在SQL中将一列拆分为多列

时间:2013-01-30 20:49:24

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012

我需要在TSQL中解决我的问题

当前表

TRX      DOC      ITEM      DOCTYPE      QTY
--------------------------------------------
123      ASM1     001       1            100
124      ASM2     002       1             10
234      ADJ1     002       2            -30
456      SAL1     001       3            -20
457      SAL2     002       3            -10
789      PRE1     002       4             10
910      ADJ2     001       2             20

如何将列QTY分割为总和(QTY)AS QTYIN和QTYOUT,如下所示

ITEM    QTYIN    QTYOUT   TOTQTY
---------------------------------
 001      120       -10     110
 002       20       -50     -30

感谢您的帮助,我需要解决方案。

1 个答案:

答案 0 :(得分:4)

使用GROUP BY子句将结果合并到Item,然后将SUMCASE语句合并为特定条件(DEMO):

select
  item,
  sum(case when qty > 0 then qty end) as qtyin,
  sum(case when qty < 0 then qty end) as qtyout,
  sum(qty) as totqty
from
  Table1
group by
  Item

示例输出(我假设差异只是拼写错误?):

| ITEM | QTYIN | QTYOUT | TOTQTY |
----------------------------------
|    1 |   120 |    -20 |    100 |
|    2 |    20 |    -40 |    -20 |