我有一张表,其中一列应该根据另一列挑选数据。这可能是最好的展示。从不同标准的列中选择一个表 - SQL Oracle
我的DB:
预期结果:
所以我试图用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' –