2014-09-01 63 views
-1

我有2个表,我想从单个查询中获取数据集以在图表中显示它。 但我正在执行错误。只有年和expyear和月和exp月是列可能有共同的数据。每一行都有其年份和月份字段。单选查询中两个不同表上的求和函数

这里是我试图查询:

select 
    t.transExpense 
    g.grocExpense 
from 
    (Select sum(traexpense) as transExpense from 
       transportExpense where Year="2014") t, 
    (Select sum(groexpense) as grocExpense from 
       groceryExpense where expYear="2014") g 

请帮助。

+1

你得到了什么错误信息? – Thilo 2014-09-01 04:38:45

回答

2

t.transExpense后面缺少逗号。

但是,要返回单个值,则不需要将子查询放入FROM子句中;你可以直接在SELECT中使用它们作为标量子查询:

SELECT (SELECT SUM(traexpense) 
     FROM transportExpense 
     WHERE Year = '2014' 
     ) AS transExpense, 
     (SELECT SUM(groexpense) 
     FROM grocExpense 
     WHERE expYear = '2014' 
     ) AS grocExpense; 
+0

感谢您纠正我。获得某些优化是有意义的。有时候我们会忘记像逗号这样的小事来破坏我们的一天。 – SOAMad 2014-09-01 10:01:21

2

添加逗号所选字段之间:

select 
t.transExpense, -- << right there 
g.grocExpense 
from 
(Select sum(traexpense) as transExpense from transportExpense where Year="2014") t, 
(Select sum(groexpense) as grocExpense from groceryExpense where expYear="2014") g 
0

它可以通过连接查询来解决。例如:

SELECT sum(t.traexpense) as t.transExpense, sum(g.groexpense) as g.grocExpense 
from transportExpense t LEFT JOIN groceryExpense g ON t.fieldname=g.fieldname 
where g.expYear=2014 and t. Year=2014 

如果您的表没有任何公用字段进行连接,则可以使用t.Year和g.expYear进行连接。

相关问题