select ac1.ACCT_CODE,
ac1.PERIOD,
ac1.MONTH,
ac1.YEAR,
ac1.PRD_BDGT,
ac2.ACCT_CODE,
ac2.PERIOD,
ac2.MONTH,
ac2.YEAR,
ac2.PRD_BDGT
from account ac1, account ac2
where ac1.acct_code='075200'
and ac1.year=1994
and ac1.period between 1 and 6
and ac2.acct_code=ac1.acct_code
and ac2.year=1995
and ac2.period =ac1.period
union
select ac3.ACCT_CODE,
ac3.PERIOD,
ac3.MONTH,
ac3.YEAR,
ac3.PRD_BDGT,
ac4.ACCT_CODE,
ac4.PERIOD,
ac4.MONTH,
ac4.YEAR,
ac4.PRD_BDGT
from account ac3, account ac4
where ac3.acct_code='075200'
and ac3.year=1995
and ac3.period between 7 and 12
and ac4.acct_code=ac3.acct_code
and ac4.year=1996
and ac4.period=ac3.period
-5
A
回答
2
使用一个OR
:
select ac1.ACCT_CODE,
ac1.PERIOD,
ac1.MONTH,
ac1.YEAR,
ac1.PRD_BDGT,
ac2.ACCT_CODE,
ac2.PERIOD,
ac2.MONTH,
ac2.YEAR,
ac2.PRD_BDGT
from account ac1, account ac2
where ac1.acct_code='075200'
and ac2.acct_code=ac1.acct_code
and ac2.period =ac1.period
and ((ac1.year=1994
and ac1.period between 1 and 6
and ac2.year=1995
) OR
(ac1.year=1995
and ac1.period between 7 and 12
and ac2.year=1996))
2
您的查询,走的是两个非常相似的查询,其中唯一的区别是在一定条件下的union
where
条款。您可以通过在where
子句中使用or
来很容易地将它们组合在一起。
下面的查询还修复了join
语法:
select ac1.ACCT_CODE, ac1.PERIOD, ac1.MONTH, ac1.YEAR, ac1.PRD_BDGT, ac2.ACCT_CODE,
ac2.PERIOD, ac2.MONTH, ac2.YEAR, ac2.PRD_BDGT
from account ac1 join
account ac2
on ac2.period = ac1.period and
ac2.acct_code = ac1.acct_code
where ac1.acct_code='075200' and
((ac1.year = 1994 and
ac1.period between 1 and 6
ac2.year=1995
) or
(ac1.year=1995 and
ac1.period between 7 and 12 and
ac2.year=1996
)
);
我会感到惊讶,如果这实际上查询解决您的业务问题。对accounts
表进行自联接是可疑的。通常,聚合是需要的,但我无法说出查询的目的。
+0
加入+1,我完全没有注意到它。 –
相关问题
- 1. 请告诉我,为什么这个查询不工作
- 2. 这个错误告诉MySQL查询..?
- 3. 谁能告诉我,这个查询如何工作?
- 4. 请帮我这个查询
- 5. 如何将这两个查询合并到一个查询中?
- 6. 请告诉我这个
- 7. 我如何使这个查询在Elasticsearch?
- 8. 我如何使这个MySQL查询
- 9. 我如何使这个选择查询
- 10. 请解释这个查询
- 11. 如何构建这个请求查询
- 12. 我可以将这些更新查询到一个查询
- 13. 帮我优化这个查询。请
- 14. 如何将这3个查询合并为一个MySQL查询?
- 15. 如何这个MySQL查询转换成一个Hibernate查询
- 16. 我如何加入另一个表到这个查询
- 17. 合并这两个查询到一个查询
- 18. 如何加入一个查询到另一个查询
- 19. 当Couchbase查询超时时告诉我
- 20. 请告诉我错在我下面的查询
- 21. 如何做这个查询?
- 22. 如何做这个查询?
- 23. 如何写这个查询
- 24. 加入这两个查询到一个
- 25. 任何人都可以告诉我写这个查询的正确方法吗?
- 26. 我们如何将这个sql查询转换成MongoDB查询?
- 27. 我该如何做这个SQL查询?
- 28. 我如何结合这2个查询?
- 29. 我如何分组这个SQL查询?
- 30. 我该如何编写这个查询?
做一个sqlfiddle – Tschallacka
如果这个查询实际上做你想要的,我会感到惊讶。你可以看到,这个问题还没有得到很好的回答。我建议你问另一个问题,包括样本数据和期望的输出,并解释你实际试图解决的问题。 –