标准sql对应oracle,从不同标准的列中选择一个表 - SQL Oracle

我有一张表,其中一列应该根据另一列挑选数据。这可能是最好的展示。从不同标准的列中选择一个表 - SQL Oracle

我的DB:

96bc64f1a0f3529f7794fd94419f40ef.png

预期结果:

507d1adadc8863fb6b5622be23594e15.png

所以我试图用join做到这一点,但它可能是错的,因为这一切都从一个表。我被困在这一点:

SELECT b1.area as line, b2.budget/12 as flow_MTD, b2.budget as flow_BUDGET,

b1.budget/12 as investment_products_MTD, b1.budget as

investment_products_BUDGET,

b3.budget/12 as bonds_MTD, b3.budget as bonds_BUDGET,

b4.budget/12 as structure_MTD, b4.budget as structure_BUDGET

FROM budgets b1

JOIN budgets b2 ON b1.area=b2.area

JOIN budgets b3 ON b1.area=b3.area

JOIN budgets b4 ON b1.area=b4.area

where b1.limit = 'main'

and b1.neighbourhood = 'alpha'

and b2.neighbourhood = 'beta'

and b3.neighbourhood = 'delta'

and b4.neighbourhood = 'gamma'

什么是一个正确的方法来做到这一点..?

编辑/ UPDATE:由于我的问题已经被标记为可能由Oracle SQL pivot query 解决..该解决方案似乎不起作用,除非能够纠正:

SELECT SUM(CASE WHEN t.neighbourhood = 'alpha' THEN t.value ELSE 0 END) AS alpha,

SUM(CASE WHEN t.neighbourhood = 'beta' THEN t.value ELSE 0 END) AS beta,

SUM(CASE WHEN t.neighbourhood = 'delta' THEN t.value ELSE 0 END) AS delta,

SUM(CASE WHEN t.neighbourhood = 'gamma' THEN t.value ELSE 0 END) AS gamma

FROM budgets t

+2

它被称为_pivot_。使用术语“oracle”和“pivot”搜索SO上的一些问题 –

+3

[Oracle SQL数据透视查询](http://stackoverflow.com/questions/4841718/oracle-sql-pivot-query) –

+0

@FlorinGhita谢谢征求意见。但是,由于某些原因,用我的数据替换该数据,导致错误.. 'SELECT SUM(CASE WHEN t.neighbourhood ='alpha'THEN t.value ELSE 0 END)AS alpha, SUM(CASE WHEN t.neighbourhood ='beta'THEN t.value ELSE 0 END)AS beta, SUM(CASE WHEN t.neighbourhood ='delta'THEN t.value ELSE 0 END)AS delta, SUM(CASE WHEN t.neighbourhood ='gamma' THEN t.value ELSE 0 END)AS gamma FROM budget t' –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值