假设我有一张包含以下数据的表格
客户表:
Name amount date_created invoice_number
--------------------------------------------------
John 50 11April2012 12
Bob 150 15April2012 32
David 506 10May2012 52
Paul 80 12Aug2012 12
Mark 10 11Jan2012 52
汇总表:
Name amount
---------------------
Sally 250
Darren-32 150
我想选择 date_created 在 current_quarter 的 start_date 和 end_date 之间的所有行。如果 date_created 在当前季度内,我想在执行插入语句之前将 invoice_number 附加到名称(参见上面汇总表中的示例)。
INSERT summary(name, amount)
SELECT name|| '-' || invoice_number, date_created, invoice_number
From Customer;
我如何修改上述内容以使用“解码”函数或“案例”函数(或任何其他“IF 语句”类型函数)来检查 date_created 的值,如果 date_created 在当前季度内,则附加 invoice_number。
显然,我需要知道当前季度的开始和结束日期,并且需要在进行比较之前将它们存储在某个地方。纯 SQL 有可能吗?PL/SQL 不是一个选项。
假设我们在第一季度(4 月 - 6 月),最终结果应该是:
Name amount
---------------------
Sally 250
Darren-32 150
John-12 50
Bob-32 150
David-52 506
Paul 80
Mark 10
我正在从 Oracle 10G 数据库中读取客户表并将摘要填充到驻留在 SQL 服务器数据库中的“摘要”表中。我插入 SQL Server 数据库的事实并不重要。我正在从 Oracle 数据库中读取数据,因此语法应该与 Oracle 兼容。