【发布时间】:2020-06-11 04:54:17
【问题描述】:
我有一张这样的桌子。每次订单完成时都会填充表格。一份订单可以有一个或多个隔间。
+---------+-------+-------------+------+
| OrderID | Plant | Compartment | Qty |
+---------+-------+-------------+------+
| 91 | 12 | 1 | 2000 |
| 91 | 12 | 2 | 2000 |
| 91 | 12 | 3 | 2000 |
| 90 | 12 | 1 | 3000 |
| 89 | 12 | 1 | 5000 |
+---------+-------+-------------+------+
请帮助编写一个 SQL 脚本,将上述内容拆分为两个新表,如下所示:
表 1
+---------+-------+
| OrderID | Plant |
+---------+-------+
| 91 | 12 |
| 90 | 12 |
| 89 | 12 |
+---------+-------+
表 2
+---------+-------------+------+
| OrderID | Compartment | Qty |
+---------+-------------+------+
| 91 | 1 | 2000 |
| 91 | 2 | 2000 |
| 91 | 3 | 2000 |
| 90 | 1 | 3000 |
| 89 | 1 | 5000 |
+---------+-------------+------+
我已按照建议尝试使用 DISTINCT 命令;
SELECT * FROM table
WHERE [OrderID] = (SELECT DISTINCT OrderID from table where (COMPARTMENT = '1'))
返回错误;
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
如果脚本可以跟踪已处理的行以避免每次运行时重复,那将是锦上添花。
【问题讨论】:
-
请格式化您的数据。谢谢!
-
到目前为止你尝试过什么?为什么它不起作用? SO 不是免费的编码服务,因此请至少向我们展示您对该主题的研究。这看起来就像你在 2 个
SELECT语句之后,一个带有DISTINCT的语句。 -
到目前为止我尝试过的都没有工作的机会。抱歉,我对 SQL 的经验很少,我从事网络安全工作,偶尔会处理 SAP MII。
标签: sql sql-server split rows