问题描述
我在 SQL 中有如下数据:
实际表格
+-------------+--------+------+
| Id | Weight | Type |
+-------------+--------+------+
| 00011223344 | 35 | A |
| 00011223344 | 10 | A |
| 12311223344 | 100 | B |
| 00034343434 | 25 | A |
| 00034343434 | 25 | A |
| 99934343434 | 200 | C |
| 88855667788 | 100 | D |
+-------------+--------+------+
列 ID
的长度总是 11,数据类型为 varchar。我需要从上表中创建列 Actual Weight
和 Actual ID
。
Actual Id
依赖于列 ID
。如果 ID 以 000
开头,那么我们需要从 ID
列中找到不以 000
开头但之后的字符(即从右起 8 个字符)相似的 ID。匹配的 ID 将是 Actual Id
。例如,如果我们查看前 3 个 id,则前 2 个以 000
开头,另一个不以 000
开头且包含从右起 8 个相似字符的 ID 可以在第 3 行中找到,即 12311223344
因此,在派生列 Actual ID
中,前 2 行的 Actual Id
为 12311223344
。
Actual Weight
取决于 2 列 ID
和 Weight
中的值。如果对于任何不以 Id
开头但包含另一个以 Id
开头的条目的 000
,我们需要根据上述条件对列 000
进行分组。然后我们需要重新计算 Weight
的 Id
不是以 000
开头的,方法是将所有以 000
开头的权重相加,并与不以{ {1}}。
例如,如果我们查看前 3 行,在第 3 行中,我们有 000
以 Id
开头,并且具有从右起 8 位数字的条目与此相似,只是它们以 {{1} 开头} 而不是 123
(即第 1 行和第 2 行)。对于以 000
开头的情况,123
将类似于 000
但对于以 Actual Weight
Weight
开头的情况将是 123
我正在寻找一个可以创建这两个派生列而无需创建任何其他表/视图的查询。
期望输出
Actual Weight
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)