比较多个值 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
我正在创建下面的 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