Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL从表中选择下一个可用代码_Sql_Oracle_Responsys - Fatal编程技术网

SQL从表中选择下一个可用代码

SQL从表中选择下一个可用代码,sql,oracle,responsys,Sql,Oracle,Responsys,我想为没有促销代码表的客户ID记录表A选择一个可用的促销代码表B。 我想我有每个表的基本SQL,但不确定如何将它们组合成一个输出 ---表A--- CUST_ID|CREATED_DATE|MY_CODE XYZ111|1/1/2015|5 XYZ222|1/1/2015|6 XYZ333|7/12/2018| XYZ444|7/13/2018| XYZ555|7/14/2018| XYZ666|2/2/2012|3 XYZ777|2/2/2012|2 XYZ888|7/15/

我想为没有促销代码表的客户ID记录表A选择一个可用的促销代码表B。 我想我有每个表的基本SQL,但不确定如何将它们组合成一个输出

---表A---

CUST_ID|CREATED_DATE|MY_CODE
XYZ111|1/1/2015|5
XYZ222|1/1/2015|6
XYZ333|7/12/2018|   
XYZ444|7/13/2018|   
XYZ555|7/14/2018|   
XYZ666|2/2/2012|3
XYZ777|2/2/2012|2
XYZ888|7/15/2018|   
XYZ999|6/6/2016|4
XYZ1110|6/6/2016|1
---表B---

PROMO_CODE|PROMO_CODE_STATUS
1|assigned
2|used
3|
4|used
5|assigned
6|
7|
8|assigned
9|assigned
10|
--期望输出---

CUST_ID|MY_NEW_CODE
XYZ333|3
XYZ444|6
XYZ555|7
XYZ888|10
--到目前为止我所拥有但尚未连接的内容---

Select a.CUST_ID, b.PROMO_CODE as MY_NEW_CODE  

(Select a.CUST_ID, a.CREATED_DATE, a.MY_CODE
from $A$ a where 
a.MY_CODE is NULL AND trunc(a.CREATED_DATE) >= trunc(sysdate -1))

(Select b.PROMO_CODE, b.PROMO_CODE_STATUS
from $B$ b where 
b.PROMO_CODE_STATUS is NULL)

我会这样想:

Select a.CUST_ID, b.PROMO_CODE as MY_NEW_CODE  
FROM $A$ a, $B$ b
WHERE a.MY_CODE = b.PROMO_CODE 
AND trunc(a.CREATED_DATE) >= trunc(sysdate -1)
AND b.PROMO_CODE_STATUS is NULL

最后,我在每张表上使用了ROW_编号,这很有效:

从中选择* 选择按a.CUST\U ID追加订购的行号ASC作为行号CUST\U ID、a.CUST\U ID、a.MY\U新代码 从$A$A开始,其中A.MY_NEW_代码为NULL,且trunca.LOADED_DATE>=truncsysdate-1 c 内连接 选择按b.PROMO\U代码ASC追加订购的行号作为行促销\U代码、b.PROMO\U代码、b.PROMO\U代码状态 从$B$B开始,其中B.PROMO_代码_状态为空p 在c.Row\U CUST\U ID=p.Row\U促销码上

它产生了预期的结果:

行客户ID |客户ID |我的新代码|行促销代码|促销代码|促销代码|促销代码|状态

1 | 111 | 1 | BBB| 2 | 222 | 2 | DDD| 3 | 333 | 3 | FFF|

从更新的表格中:

---表A

客户ID |我的新代码|加载日期|

111 | | 2018-07-18 00:00:00.0 222 | | 2018-07-18 00:00:00.0 333 | | 2018-07-19 00:00:00.0 444 | | 2018-07-12 00:00:00.0

---表B

促销代码|促销代码|状态

AAA |已使用 BBB| CCC |指定 DDD| EEE |分配
FFF |

您在使用Oracle吗?如果是这样的话,那么你应该把这个标签添加到你的问题中。谢谢,但这不会为那些没有促销代码的记录选择促销代码,因为它与a.MY_code=b.Promo_code匹配。它不返回任何结果。