【发布时间】:2015-09-10 13:20:59
【问题描述】:
我需要编写 T-SQL 代码来比较需要在 T2.StageFrom 和 T2.StageTo 之间的 T1.PercentComplete。然后获取T2.Bonus_Prec 并加入 T1
T2.Bonus_Prec 的期望结果是 0.02,因为 T1.Percent_Complete 是 .27,介于 0 和 1 之间。
问题是每个Key 可以在1-6 之间有不同的T2.StageID。
如果Key 只有一个T2.StageID,它将为 0。(让我知道只有 1 个奖励选项的快速方法)
如果它有超过 1 它将从 1 开始。(如果需要,可以更改)
T1:
DROP TABLE T1;
CREATE TABLE T1(
Key VARCHAR(10) NOT NULL PRIMARY KEY
,Percent_Complete_ NUMBER(16,2) NOT NULL
);
INSERT INTO T1(Key,Percent_Complete_) VALUES ('Key Vendor',Percent_Complete);
INSERT INTO T1(Key,Percent_Complete_) VALUES ('***',0.27);
T2:DROP TABLE T2;
CREATE TABLE T2(
Key VARCHAR(50) NOT NULL
,StageID INT NOT NULL
,Stage_From NUMERIC(10,2) NOT NULL
,Stage_To NUMERIC(8,2) NOT NULL
,Stage_Bonus_Prec NUMERIC(16,2) NOT NULL
);
INSERT INTO T2(Key,StageID,Stage_From,Stage_To,Stage_Bonus_Prec) VALUES ('Key',Stage_Id,Stage_From,Stage_To,Stage_Bonus_Prec);
INSERT INTO T2(Key,StageID,Stage_From,Stage_To,Stage_Bonus_Prec) VALUES ('***',1,0,0.8,0.02);
INSERT INTO T2(Key,StageID,Stage_From,Stage_To,Stage_Bonus_Prec) VALUES ('***',2,0.8,1,0.035);
INSERT INTO T2(Key,StageID,Stage_From,Stage_To,Stage_Bonus_Prec) VALUES ('***',3,1,-1,0.05);
输出:+-----+-------------------+--------------------+
| Key | Percent_Complete | [Stage_Bonus_Prec] |
+-----+-------------------+--------------------+
| *** | 0.27 | 0.02 |
+-----+-------------------+--------------------+
这是一个带有这些值的SQLFiddle
【问题讨论】:
-
这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
我希望现在好多了。谢谢
-
没有什么比发布消耗性 ddl 和示例数据更好的了。这与消耗性 ddl 和示例数据完全不同。这里的挑战是我们不知道你想做什么,我们不知道你的桌子,我们看不到你的屏幕。我们唯一知道的是您发布的内容,此时几乎什么都不是。您是否注意到我引用的文章中关于发布示例数据的创建表语句和插入语句的部分?如果您这样做,我们可以提供帮助,否则我们无能为力。
-
这就是我更改帖子并添加 2 个表格图像的原因,这就是我所看到的,这就是现在的所有数据。
-
您没有添加两个表。您添加了两张图片。我们不知道任何东西的数据类型,更重要的是我们不能在我们的系统上运行它,所以我们可以创建查询。即使这样,我们也不知道您对基于这两个表的输出的期望是什么,因为没有发布任何规则。
标签: sql sql-server tsql compare