不同的查询结果到一行

时间:2014-04-10 18:12:23

标签: sql-server

我正在编写三个不同的查询,并希望结果全部为单行

示例:

SELECT top 1 processdate as gold FROM goldchart WHERE instrument = 'gold'
   order by processdate desc

SELECT top 1 processdate as silver FROM silverchart WHERE instrument = 'silver'
   order by processdate desc

SELECT top 1 processdate as usoil FROM usoilchart WHERE instrument = 'usoil'
   order by processdate desc

我得到的结果是:

gold
2014-04-10
silver
2014-01-11
usoil
2014-02-14

The result i need is :

gold        silver       usoil 
2014-04-10  2014-01-11   2014-02-14

需要合并所有三个查询并将结果作为一行。

3 个答案:

答案 0 :(得分:1)

我认为SQL服务器允许你这样做,而不是......

Select 
(SELECT top 1 processdate FROM goldchart WHERE instrument = 'gold' order by processdate desc) as gold, 
(SELECT top 1 processdate FROM silverchart WHERE instrument = 'silver' order by processdate desc) as silver, 
(SELECT top 1 processdate FROM usoilchart WHERE instrument = 'usoil' order by processdate desc) as usoil 

答案 1 :(得分:1)

您可以将select语句包装在括号中并将它们组合在一起

SELECT 
 (SELECT top 1 processdate FROM goldchart WHERE instrument = 'gold'
  order by processdate desc) as gold,

 (SELECT top 1 processdate FROM silverchart WHERE instrument = 'silver'
  order by processdate desc) as silver,

(SELECT top 1 processdate FROM usoilchart WHERE instrument = 'usoil'
  order by processdate desc) as usoil

答案 2 :(得分:0)

这有效,至少在SQLServer上。

SELECT TOP 1 gc.processdate AS gold, sc.processdate AS silver, uc.processdate AS usoil 

FROM goldchart gc, silverchart sc, usoilchart uc 

ORDER BY gc.processdate DESC, sc.processdate DESC, uc.processdate DESC