select Item,
sum(case when WareHouse='X' then Quantity else 0 end) as X,
sum(case when WareHouse='Y' then Quantity else 0 end) as Y
from table
group by Item
※ 引述《razer (还是一个人)》之铭言:
: (针对 SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
: 数据库名称:
: NetSuite, 算是Oracle底下的吧
: 数据库版本:
: 内容/问题描述:
: 库存资料表约略如下
: Item WareHouse Quantity
: A X 2
: A Y 0
: B X 1
: B Y 3
: C X 4
: 希望用SQL读出来可以读成
: Item X Y
: A 2 0
: B 1 3
: C 4
: 感觉很简单,写成以下
: select Item,X=case when WareHouse='X' then Quantity else NULL end,
: Y=case when WareHouse='Y'then Quantity else NULL end from table
: 一如想像会形成
: Item X Y
: A 2
: A 0
: B 1
: B 3
: C 4
: 可是如果将SQL改成
: select Item,sum(X=...),sum(Y=...) from table group by Item
: (恕我将以上那一串case简略)
: 会回报语法有错
: 再将SQL改成
: select Item,X=sum(...),Y=sum(...) from table group by Item
: 会直接回报failed to retrieve data,看来不是语法有错?
: 想请问错误可能会发生在哪里?或者我根本就用了不好的写法?