根据 SQL Server 中的另一个表获取值的计数

问题描述 投票:0回答:1

我有 2 个表,

Products
Discounts
,我需要在其中获取数量值小于等于大小的国家/地区的数量。

这是两个表:

CREATE TABLE Products 
(
    P_Name VARCHAR(50), 
    Qty INT
);

INSERT INTO Products (P_Name, Qty)
VALUES 
    ('Product A', 9),
    ('Product B', 2),;

CREATE TABLE Discounts 
(
    C_Name VARCHAR(50),
    Size INT
);

INSERT INTO Discounts (C_Name, Size) 
VALUES 
    ('USA', 2 ),
    ('Germany', 4),
    ('Brazil', 5),
    ('Russia', 6);

这是预期的输出

P_Name     Qty  Count
---------------------
Product A  9    4
Product B  2    1

说明:

Product A
的数量为9,因此有资格在4个国家获得折扣,同样对于
Product B
,数量应为1。

这是我尝试过的,但我无法获得正确的输出

SELECT
    *,
    COUNT(CASE 
              WHEN qty <= (SELECT Size FROM Discounts) 
                  THEN 1
                  ELSE 0 
          END) AS count
FROM
    Products  
sql sql-server
1个回答
0
投票
SELECT P.P_NAME,P.Qty,X.CNTT
FROM Products AS P
OUTER APPLY
(
   SELECT SUM(A.XCOUNT)AS CNTT FROM
  (
    SELECT 
      CASE 
       WHEN P.Qty>=D.Size THEN 1 
       ELSE 0 
     END AS XCOUNT
    FROM Discounts AS D
 )AS A
)X

根据您的样本数据,您可以尝试上面的方法吗

© www.soinside.com 2019 - 2024. All rights reserved.