比较多个值 SQL

Compare Multiple Values SQL

我正在创建下面的 2 个临时 table。我需要创建一个标志,说明每个客户的所有 weekly_sales 值是否都小于 Table 1 中的单个平均值。这样做的最佳方法是什么?

例如,这里是 table 1:

Table 1 
cust_nbr  avg_sales
1234      200

这里是 table 2:

Table 2     
cust_nbr weekly_sales week
1234     222          1
1234     211          2
1234     121          4

要获取是否有任何单个值大于所有 weekly_sales 值,您可以这样做。

CASE 
    WHEN @avg > (
        SELECT MAX(weeky_sales)
            FROM [Table 2]
        ) THEN
        1
    ELSE
        0
END

如果将其合并到一个函数中,您可以在 [Table 1] 上添加一个计算列以调用基于 avg_sales 的函数。

试试这个:它应该 select 每个客户,如果他们的最大每周销售数字仍然低于 Table1 中为他们设定的平均水平,则标记他们。

SELECT 
    A.Cust_nbr,
    A.Avg_Sales,
    CASE WHEN B.MaxSale < A.Avg_Sales THEN 1 ELSE 0 END IsAlwaysBelowAverage
FROM 
    Table1 A
     LEFT JOIN 
      (
        SELECT 
            Cust_Nbr,
            MAX(Weekly_Sales) AS MaxSale
        FROM Table2 
      ) B ON 
        A.Cust_Nbr = B.Cust_Nbr