0
A
回答
2
也许这样?
Select
ID,
max(case when MYDATE = '20160105 10:00:00' then PRICE else 0 end),
max(case when MYDATE = '20140805 10:00:00' then PRICE else 0 end),
max(case when MYDATE = '20170215 10:00:00' then PRICE else 0 end)
FROM
(
select ID, PRICE FROM TABLE1 WHERE MYDATE in ('20160105 10:00:00', '20140805 10:00:00', '20170215 10:00:00')
UNION ALL
SELECT ID, PRICE FROM TABLE2 WHERE MYDATE in ('20160105 10:00:00', '20140805 10:00:00', '20170215 10:00:00')
) A
group by ID
猜测会更容易些,如果你提供的任何例子...
0
你可以避开(),使用A.ID的加入,这可能会产生一些好处的性能
Select A.ID, A.[2016 Price], B.[2014 Price], C.[2017 Price]
FROM
(
select ID, PRICE [2016 Price] FROM TABLE1 WHERE MYDATE = 2016-01-05 10:00:00
UNION
SELECT ID, PRICE FROM TABLE2 WHERE MYDATE = 2016-01-05 10:00:00
) A
INNER JOIN
(
select ID, PRICE [2014 Price] FROM TABLE1 WHERE MYDATE = 2014-08-05 10:00:00
UNION
SELECT ID, PRICE FROM TABLE2 WHERE MYDATE = 2014-08-05 10:00:00
) B ON A.ID =B.ID
INNER JOIN
(
select ID, PRICE [2017 Price] FROM TABLE1 WHERE MYDATE = 2017-02-15 10:00:00
UNION
SELECT ID, PRICE FROM TABLE2 WHERE MYDATE = 2017-02-15 10:00:00
) ON A.ID =C.ID
相关问题
- 1. 内部加入杀死查询性能
- 2. SQL查询性能的简单联合
- 3. 联盟SQL查询性能
- 4. SQL联合查询
- 5. SQL,联合查询
- 6. SQL联盟/加入查询
- 7. SQL加入Vs SQL子查询(性能)?
- 8. Sql插入查询性能
- 9. 查询联合查询
- 10. 通过加入杀死SQL查询的性能
- 11. SQL Server查询性能 - 普通加入VS子查询
- 12. 加入性能较差的SQL查询
- 13. SQL查询性能
- 14. SQL查询性能
- 15. SQL查询性能
- 16. SQL查询性能
- 17. SQL查询性能
- 18. SQL性能查询
- 19. SQL Server的查询性能查询表
- 20. 带查询SQL查询性能
- 21. Sql联合查询帮助
- 22. SQL lite联合查询
- 23. 访问SQL联合查询
- 24. SQL查询 - 联合NOW()
- 25. 错误联合SQL查询
- 26. 联合查询
- 27. 联合查询
- 28. SQL查询,完全联接,性能
- 29. Oracle SQL - 添加两个联合查询
- 30. SQL联合查询不正确加总
每个单独的查询是否也慢?你有ID列的索引吗?顺便说一句,我认为你需要使用PIVOT而不是写这样的查询。 – FLICKER
您应该从ID开始,如果您不希望table1和table2之间有重复的ID,您可以用Union全部替换Union – NotCaring
@ FLICKER:谢谢。我有一个ID的索引。是否可以通过枢轴。好心建议 –