我有 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
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
根据您的样本数据,您可以尝试上面的方法吗