@ user1063280的响应假定您想要表中的单个行。您的问题更像是我想要为表格中的每个模型创建相关的行。如果这是你想要的东西,下面的查询应该实现自己的目标:
DECLARE @Cars TABLE
(
ID int IDENTITY,
CreditFlag bit,
PrivateOfferFlag bit,
ModelName varchar(3),
CashBack numeric(19,2),
BonusCash numeric(19,2),
TotalSavings AS CashBack + BonusCash
);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 1, 'AAA', 750, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 1, 'BBB', 750, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 1, 'CCC', 2500, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (1, 1, 'DDD', 750, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 0, 'AAA', 1500, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 0, 'BBB', 2000, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (1, 0, 'CCC', 3000, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 0, 'DDD', 3000, 750);
INSERT INTO @Cars (CreditFlag, PrivateOfferFlag, ModelName, CashBack, BonusCash) VALUES (0, 1, 'AAA', 750, 750);
SELECT
*
FROM @Cars c1
WHERE ID =
(
SELECT
TOP 1 ID
FROM @Cars c2
WHERE c2.ModelName = c1.ModelName
AND c2.CreditFlag = 1
AND c2.PrivateOfferFlag = 1
AND c2.CashBack > 0
AND c2.BonusCash > 0
ORDER BY ID
);
你能够提供你想在子查询的任何过滤,您可以指定任何命令你想。我添加了一个ID列,并选择了第一个这样的列。例如,您可以更复杂一些,可以通过TotalSavings降序排序。
您是否有一个带有记录条目时间戳的列?如何区分两条记录是否符合条件?请张贴表格结构,样本数据和所需的输出。 – Koshera
我将表格添加为图片 – user3348408
@ user3348408是您的Excel文件的源代码,还是您只是将数据转储到Excel?如果Excel不是源代码,那么您使用的是哪种服务器软件(SQL Server/Oracle/etc)? –