提问人:Kieran Ferguson 提问时间:9/7/2023 最后编辑:Kieran Ferguson 更新时间:9/7/2023 访问量:23
对于具有多个该类型的 CARD# 的客户,删除最低的 CARD#
Deleting the lowest CARD# for customers with more than one CARD# of that type
问:
我有一个客户表,我需要删除存储了多个特定卡号的卡号的最小卡号。我可以为它编写一个选择查询,但是当我尝试将其转换为删除时,它不起作用。
- || |||
CustomerID
Card#
Card Type
TableID
- |1 |123456 |AA级 |789 |
- |1 |234567 |AA级 |999 |
- |1 |98989881 |不列颠哥伦比亚省 |223 |
- |2 |678945 |AA级 |123 |
- |2 |987536 |AA级 |689 |
- |2 |99978821 |不列颠哥伦比亚省 |334 |
对于AA类型的卡,预计每个客户只有一张卡#。它不应接触任何其他卡类型 #s。
答:
0赞
Levi
9/7/2023
#1
我不知道你想要的输出是什么,所以试试这个
DECLARE @TEMP_20230907 TABLE
(
CustomerID INT,
Card# INT,
Card_Type NCHAR(2),
TableID INT
)
INSERT INTO @TEMP_20230907
VALUES
(N'1',N'123456',N'AA',N'789'),
(N'1',N'234567',N'AA',N'999'),
(N'1',N'98989881',N'BC',N'223'),
(N'2',N'678945',N'AA',N'123'),
(N'2',N'987536',N'AA',N'689'),
(N'2',N'99978821',N'BC',N'334')
DELETE FROM @TEMP_20230907
WHERE Card# IN (
SELECT MIN(Card#) AS MIN_CARD
FROM @TEMP_20230907
WHERE Card_Type = 'AA'
GROUP BY CustomerID,Card_Type
)
SELECT * FROM @TEMP_20230907
以上将删除最低卡号MSSQL
AA
输出:
CustomerID Card# Card_Type TableID
1 234567 AA 999
1 98989881 BC 223
2 987536 AA 689
2 99978821 BC 334
注意:还有其他方法可以达到相同的结果
评论