SQL:WHERE子句多个条件

3
SELECT
    ((1.0 * (SELECT SUM(r.SalesVolume) 
             FROM RawData r
             INNER JOIN Product p ON r.ProductId = p.ProductId
             WHERE p.Distributor = 'TF1', 'WARNER')
GROUP BY p.Distributor)
/
(SELECT SUM(r.SalesVolume) FROM RawData r)*100)
;

上述查询出现错误:

Lookup Error - SQL Server Database Error: Incorrect syntax near ','.

有人能指出问题在哪里吗?我知道在这种情况下不能使用OR/AND条件。

结果集必须有2行。

产品:

Distributor     
  WARNER              
  TF1                 
  WARNER              
  TF1  

原始数据:

   SalesVolume
        5
        6
        3
        4

你错了,你必须使用OR/AND(或简写的IN)。 - siride
2个回答

2

也许应该使用IN代替=

SELECT
((1.0*(SELECT SUM(r.SalesVolume) FROM RawData r
INNER JOIN Product p
ON r.ProductId = p.ProductId
WHERE p.Distributor in ('TF1','WARNER'))
/
(SELECT SUM(r.SalesVolume) FROM RawData r)*100)
;

我不得不添加group by子句。所以修改后的查询是SELECT (1.0*(SELECT SUM(r.SalesVolume) FROM RawData r INNER JOIN Product p ON r.ProductId = p.ProductId WHERE p.Distributor in ('TF1','WARNER')GROUP BY p.Distributor) / (SELECT SUM(r.SalesVolume) FROM RawData r)*100) ; 然而现在我得到了“查找错误 - SQL Server数据库错误:子查询返回多个值。当子查询跟随=,!=,<,<=,>,>=或者当子查询用作表达式时,这是不允许的。” - Tauseef Hussain
@TauseefHussain 展示一些虚拟数据,这样就能清楚你想要什么了。 - Ameya Deshpande
@TauseefHussain 你期望的输出是什么? - Brent D

1
你应该使用

标签


WHERE p.Distributor IN ('TF1','WARNER')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接