2

我可以選擇價格總和(稅)小於價格,我正在執行查詢但我收到錯誤如何從兩個不同的表中選擇列(A,B)其中總和(列表A)小於columntableB

select b.price 
from tableA a 
inner join tableB b on b.idprice = a.idprice where sum(tax)<price 
group by a.idprice,b.price 
+0

您得到的錯誤是什麼? – BuddingProgrammer

+0

你可以發佈架構嗎?您正在嘗試的查詢以及您收到的錯誤將會有很大幫助。也許您可以使用http://sqlfiddle.com/ – kkaosninja

+0

重現它。聚合可能不會出現在WHERE子句中,除非它位於包含在HAVING子句或選擇列表中的子查詢中,並且要聚合的列是外部引用。 my erorr – SAMAN

回答

1

我覺得你ORI ginal方法將使用having子句而不是where來工作:

select b.price 
from tableA a inner join 
    tableB b 
    on b.idprice = a.idprice 
group by a.idprice, b.price 
having sum(tax) < b.price; 
2

所以是這樣的:

SELECT t.*,s.* 
FROM TableA t 
INNER JOIN(SELECT idprice,sum(tax) as sum_tax 
      FROM TableB 
      GROUP BY idprice) s 
ON(t.idprice = s.idprice and t.price < s.sum_tax) 

或者,如果價格表也應該被概括:

SELECT t.idprice,sum(t.price),max(s.sum_tax) 
FROM TableA t 
INNER JOIN(SELECT idprice,sum(tax) as sum_tax 
      FROM TableB 
      GROUP BY idprice) s 
ON(t.idprice = s.idprice) 
GROUP BY t.idprice 
having sum(t.price) < max(s.sum_tax) 
+0

但無效(您的查詢中的稅,t.price – SAMAN

+0

查詢中出現此錯誤(消息207,級別16,狀態1,行3 無效的列名稱'稅' 消息207,級別16,狀態1 ,第6行 無效的列名「價格」。) – SAMAN

+0

因此,請將其更改爲您的列名稱。我不是魔術師,我不能猜測它們,也嘗試工作。@saman – sagi

相關問題