【问题标题】:How to Select columns from tow different table(A,B) where sum(column tableA) less then columntableB如何从两个不同的表(A,B)中选择列,其中 sum(column tableA)小于 columntableB
【发布时间】:2016-06-20 00:36:25
【问题描述】:

我可以选择总和(税)小于价格的价格,我正在执行查询但我收到错误

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

【问题讨论】:

  • 您遇到的错误是什么?
  • 您也可以发布架构吗?您正在尝试的查询以及您收到的错误将有很大帮助。也许您可以使用sqlfiddle.com 重现它
  • 聚合可能不会出现在 WHERE 子句中,除非它位于 HAVING 子句或选择列表中包含的子查询中,并且被聚合的列是外部引用。我的错误
  • select b.price from tabelA a inner join tabelB b on b.idprice = a.idprice where sum(a.tax)

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012


【解决方案1】:

我认为您的原始方法可以使用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)
    

    【讨论】:

    • 但无效(您的查询中的tax、t.price
    • 您的查询中出现此错误(消息 207,级别 16,状态 1,第 3 行无效的列名“税”。消息 207,级别 16,状态 1,行 6 无效的列名“价格”。 )
    • 所以把它改成你的列名。我不是魔术师,我猜不到他们,也尝试工作。 @萨曼
    • 谢谢您,您的查询是真的,我在列名上打错了,谢谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多