SELECT PLAN_NO, PRODUCT_UNIT_NO, IN_MAT_NO_1, END_PROD_TIME, SG_SIGN, OUT_MAT_THICK, OUT_MAT_WIDTH, IN_MAT_1_WT, OUT_MAT_NO, OUT_MAT_ACT_WT, ORDER_NO FROM BSAMMOMMCR.T_ODS_TMMCRMAB13 WHERE SUBSTR (END_PROD_TIME, 1, 8) = '''||YESTERDAY||''' AND PRODUCT_UNIT_NO IN (''C101'',''C102'',''C119'',''C202'',''C302'') UNION ALL SELECT PLAN_NO, PRODUCT_UNIT_NO, IN_MAT_NO_1, END_PROD_TIME, SG_SIGN, OUT_MAT_THICK, OUT_MAT_WIDTH, IN_MAT_1_WT, OUT_MAT_NO, OUT_MAT_ACT_WT, ORDER_NO FROM BSAMMOMMCR.T_ODS_TMMCRMAD04 WHERE SUBSTR (END_PROD_TIME, 1, 8) = '''||YESTERDAY||''' AND PRODUCT_UNIT_NO IN (''C137'')
时间: 2024-04-22 22:28:39 浏览: 63
这是一个SQL查询语句,查询了两个数据表中的数据并进行了合并。该查询语句的目的是获取昨天生产的特定生产单元(C101、C102、C119、C202、C302、C137)的生产信息,包括生产计划号、产品单元号、输入物料号、结束生产时间、SG标识、输出物料厚度、输出物料宽度、输入物料重量、输出物料号、实际输出物料重量和订单号等。
相关问题
oracle给表TPMZBRK00追加唯一约束字段PROD_SEQ_NO
在Oracle数据库中,如果你想要向表TPMZBRK00追加一个唯一约束字段PROD_SEQ_NO,你可以使用ALTER TABLE语句来完成这个操作。这里是一个基本的步骤:
1. **锁定表**:
首先,为了保护数据的一致性,你需要锁定表,通常是行级锁(ROW EXCLUSIVE)。这可以通过以下命令完成:
```
ALTER TABLE TPMZBRK00 LOCK TABLE IN ROW EXCLUSIVE MODE;
```
2. **添加约束**:
然后,使用ADD CONSTRAINT子句添加UNIQUE约束,例如:
```
ALTER TABLE TPMZBRK00
ADD CONSTRAINT PK_TPMBRK00_PROD_SEQ_NO UNIQUE (PROD_SEQ_NO);
```
这里假设"PK_TPMBRK00_PROD_SEQ_NO"是你希望为新字段创建的唯一索引名称。
3. **检查并解锁**:
添加约束后,确认无误,然后释放锁:
```
UNLOCK TABLE TPMZBRK00 NOWAIT; -- 如果有其他事务阻塞,可以考虑去掉NOWAIT,等待它自动解锁
```
4. **查看状态**:
最后,你可以运行SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TPMZBRK00' 来验证新的唯一约束是否已经成功添加。
注意:在生产环境中执行这样的操作时,一定要小心,并备份重要数据,以防意外。
SELECT PLAN_NO,PRODUCT_UNIT_NO, IN_MAT_NO_1, END_PROD_TIME FROM ( SELECT ROW_NUMBER () OVER (PARTITION BY PRODUCT_UNIT_NO ORDER BY END_PROD_TIME ASC) AS RN1, * FROM ( SELECT PRODUCT_UNIT_NO, PLAN_NO, IN_MAT_NO_1, END_PROD_TIME FROM BSAMMAPM.T_ADS_SRV_PMSJ0018_TEMP01 WHERE PRODUCT_UNIT_NO IN (''C101'',''C102'',''C202'',''C112'',''C108'',''C208'',''C308'',''C408'' ,''C109'',''C209'',''Q112'',''Q212'',''Q312'',''C302'',''C212'',''C312'',''C508'')
这是一个SQL语句,该语句的作用是从表BSAMMAPM.T_ADS_SRV_PMSJ0018_TEMP01中选择PRODUCT_UNIT_NO为指定值的记录,并按照END_PROD_TIME升序排序。其中,ROW_NUMBER函数用于为每个PRODUCT_UNIT_NO分区内的记录生成一个序号,以便之后的筛选和排序。
具体来说,该语句首先使用子查询从表BSAMMAPM.T_ADS_SRV_PMSJ0018_TEMP01中选择指定PRODUCT_UNIT_NO的记录,然后在子查询的结果集上使用ROW_NUMBER函数生成序号,最后在外层查询中筛选出序号为1的记录。这样可以保证每个PRODUCT_UNIT_NO分区内的记录仅选择END_PROD_TIME最早的一条记录。
需要注意的是,该SQL语句中的IN子句中包含多个值,这些值用逗号分隔。这种写法可以简化SQL语句,但可能会影响查询性能。如果IN子句中包含大量的值,建议考虑使用其他方式替代。
阅读全文