SQL选择项目并将字段链接到同一选择

时间:2015-08-12 11:16:42

标签: sql select

目前我正在检索采购订单行(POL)列表,每个都有截止日期。对于POL.Due日期是未来日期即> =当前日期的每一行,我需要确定POL.Due日期所属的期间名称和财务周。

SQL数据库有一个财务周期表和一个财务周表。每个表都由日期驱动。

PERIODPER
    PERIOD_DATE
    PERIOD
    PERIOD_NAME
    PERIOD_YEAR

PERIOD_WEEK
    START_DATE
    WEEK
    YEAR

针对每个报告行以及截止日期我尝试链接到上述每个表,以确定POL.Due日期的PERIOD_NAME和WEEK。

POL.Due日期已经过去,即<当前日期,我需要检索当前日期的PERIOD_NAME和WEEK。

我想尝试在SQL select中执行此操作,因为我唯一的另一个选择是编写VBA报告,该报告最初检索所有采购订单行,然后按顺序读取每个订单行并链接到其他表以确定财务期间名称和周数。

我正在寻找最终结果:

PO_NUMBER   PO_LINE   DUE_DATE   WEEK_NO  PERIOD_NAME

我很感激对此的任何帮助,因为我的SQL知识并没有延伸到我看来是一个复杂的选择。

2 个答案:

答案 0 :(得分:0)

你的意思是这样的(SQL Server语法)吗?

select  pol.po_number,
        pol.po_line,
        pol.due_date,
        pw.week as week_no,
        pp.period_name
from    purchaseOrderLines pol
        left join period_week pw    on pol.DueDate > GetDate()
                                    and pw.start_date <= pol.due_date
                                    and dateAdd(d, 7, pw.start_date) >= pol.due_date
        left join periodPer pp  on pol.DueDate > GetDate()
                                and pp.period_date = pol.DueDate

答案 1 :(得分:0)

感谢您的回复。

我尝试了你的逻辑,它给了我正在寻找的东西,但经过进一步的调查,我找到了另一张表,详细列出了截至2025年的每个日期,包括周和月。我现在只是使用我的截止日期值为这个新表创建一个JOIN。

我要感谢您花时间和精力回答我的问题。虽然我没有对你所说的例子使用你的建议,但是我正在看你所呈现的内容,它肯定给了我一些关于我目前正在处理的其他SELECT语句的想法。