【发布时间】:2016-04-27 01:51:57
【问题描述】:
我有两个 SQL 脚本。我需要合并来自他们两个的数据。我已将它们设置为两个单独的易失性表,以便将它们连接在一起以形成我完成的报告。下面的脚本只是我试图从数据中提取的一个示例。真正的脚本非常复杂,并且有许多子查询需要使用 volitile 表而不是常规连接。连接在“customer_acct”上。此脚本的目的是生成所有订单的记录,然后在“customer_acct”绑定的列中显示是否已对所述订单应用退款。
我得到的结果给了我
CUST_ACCT PRODUCT_ORDERED REFUND_AMT
1111111 item#5 10.00
1111111 item#5 20.00
1111111 item#5 30.00
2222222 item#5 10.00
2222222 item#5 20.00
2222222 item#5 30.00
3333333 item#5 10.00
3333333 item#5 20.00
3333333 item#5 30.00
我的脚本总结如下。
CREATE VOLATILE TABLE ORDERS, NO LOG AS(
SELECT
p.customer_acct
p.product_ordered
etc.
FROM server p
)WITH DATA PRIMARY INDEX (p.customer_acct)
ON COMMIT PRESERVE ROWS;
CREATE VOLATILE TABLE REFUND, NO LOG AS(
SELECT
c.customer_acct
c.refund_amt
c.date
etc.
FROM server c
)WITH DATA PRIMARY INDEX (c.customer_acct)
ON COMMIT PRESERVE ROWS;
SELECT DISTINCT
a.cust_acct
,a.product_ordered
,b.refund_amt
FROM ORDERS a
LEFT Join REFUND B
on b.cust_Accta = a.customer_acct
;
DROP TABLE ORDERS;
DROP TABLE REFUND;
基本上,脚本会为“订单”行中的每一行返回一个结果,并将其复制到“退款”表中的每个可能值,尽管没有任何真正的匹配项。
有什么想法吗?我先道歉,因为 SQL 对我来说相对较新,我正在努力扩展我的知识。
【问题讨论】:
-
下次请只使用相关的产品类型标签,不要随意选择那些包含字母sql的标签!
-
感谢您的反馈@Shadow