【发布时间】:2019-12-26 18:45:40
【问题描述】:
这是我的问题,我正在处理现有的大型报告,他们希望我在每次数据库中的行满足条件时添加具有特定值的虚构行(假设状态 = 已取消) 我将查询(1000 行 SQL 代码)简化为:
如果我有两个表 A 和 B:
Table A
Name Status Estimated Real
COMPANY A Completed $50.00 $50.00
COMPANY B Canceled $0.00 $0.00
COMPANY C Not Approved $100.00 $0.00
COMPANY D Withdrawn $20.00 $10.00
COMPANY E Not Approved $0.00 $0.00
COMPANY F Canceled $1,000.00 $1,000.00
---------------------------------------------------------------
Table B
Name Status Estimated Real
COMPANY G In Progress $50.00 $20.00
COMPANY H Not Started $20.00 $0.00
COMPANY H Passed $100.00 $100.00
COMPANY I Approved $20.00 $00.00
COMPANY J Canceled $14.00 $6.00
COMPANY A Scheduled $2,000.00 $2,000.00
查询是这样的:
SELECT * from (
SELECT NAME,STATUS,ESTIMATED,REAL from A
UNION ALL
SELECT NAME,STATUS,ESTIMATED,REAL from B
) order by name
结果是这样的:
Name Status Estimated Real
COMPANY A Completed $50.00 $50.00
COMPANY A Scheduled $2,000.00 $2,000.00
COMPANY B Canceled $0.00 $0.00
COMPANY C Not Approved $100.00 $0.00
COMPANY D Withdrawn $20.00 $10.00
COMPANY E Not Approved $0.00 $0.00
COMPANY F Canceled $1,000.00 $1,000.00
COMPANY G In Progress $50.00 $20.00
COMPANY H Not Started $20.00 $0.00
COMPANY H Passed $100.00 $100.00
COMPANY I Approved $20.00 $00.00
COMPANY J Canceled $14.00 $6.00
现在我需要做的是每当状态被取消时插入虚构的行: 对于 Status = Canceled 的每一行,添加一个具有相同 Name 和 Estimated 列、Status Scheduled 和 Real = 0 的行。结果应如下所示:(我在虚构行之前添加了 **)
Name Status Estimated Real
COMPANY A Completed $50.00 $50.00
COMPANY A Scheduled $2,000.00 $2,000.00
COMPANY B Canceled $0.00 $0.00
**COMPANY B Scheduled $0.00 $0.00**
COMPANY C Not Approved $100.00 $0.00
COMPANY D Withdrawn $20.00 $10.00
COMPANY E Not Approved $0.00 $0.00
COMPANY F Canceled $1,000.00 $1,000.00
**COMPANY F Scheduled $1,000.00 $0.00**
COMPANY G In Progress $50.00 $20.00
COMPANY H Not Started $20.00 $0.00
COMPANY H Passed $100.00 $100.00
COMPANY I Approved $20.00 $00.00
COMPANY J Canceled $14.00 $6.00
**COMPANY J Scheduled $14.00 $0.00**
我尝试使用双重连接或联合,但我不知道缺少什么。非常感谢
【问题讨论】:
-
是否有字段给出公司不同状态之间的顺序?或者 Canceled 状态不必是创建虚构行的最后一个状态。