gpt4 book ai didi

mysql - Crystal Reports 无法正确执行 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 20:43:39 24 4
gpt4 key购买 nike

我正在撰写一份报告,根据 promise 的发货日期拉动金属现货价格。它使用 60 天中西部 (MW) 平均值。因此,对于 3 月份 promise 的发货量,使用 1 月份的平均兆瓦数。该表是用户定义的,并且存在一些问题使我无法像平常一样拉动字段(长故事)。

因此,我编写了一个查询来将数据库中的列标签([月] [年])与 promise 日期的月份和年份进行比较,并返回正确的 MW 平均值。它在 Oracle 的 SQL Developer 中运行正常,但在 Crystal 中运行不正确,返回同月的 MW 平均值(或根本不运行)。如下,供引用。 (我知道这有点笨拙)

select ap.invoice_Date indate, 
ap.invoice_no as invno,
ap.vendor_id,
apd.po_detail_id as podid,
por.promise_date as pd,
dat.parent_id as vendid,
dat.ud_cols_id as cols,
col.col_label label,
dat.cuser as ingot
from ud_data dat
inner join ud_cols col
on dat.ud_cols_id = col.id
inner join apinvoice ap
on ap.vendor_id = dat.parent_id
inner join apinvoice_detail apd
on ap.id = apd.apinvoice_id
inner join po_detail pod
on apd.po_detail_id = pod.id
inner join po_releases por
on pod.id = por.po_detail_id
where trim(TO_CHAR(add_months(por.promise_date, -2), 'MONTH'))= upper(substr(COL.col_label, 1, length(col_label)-5))
and substr(por.promise_date, -2, 2) = substr(col.col_label, -2, 2)
and ud_cols_id in (94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 146)
order by ap.invoice_Date

我认为这与日期和格式有关,但我将它们分开并且比较匹配。我尝试了所有可能的链接组合(但坚持使用左外连接,内连接使报告返回空白)。浏览现场数据也没有任何内容。

任何想法都值得赞赏。我很茫然..

最佳答案

实际上,一旦它在数据库上工作,它就应该在 Crystal 中工作,但如果它不起作用,那么您可以对形成 Crystal 报表的方式进行一些更改,因为数据存在于数据库中并且它运行良好。

给下面的方法一个机会。首先将查询分为 select 作为一个部分和 where 子句作为一个部分

select ap.invoice_Date indate, 
ap.invoice_no as invno,
ap.vendor_id,
apd.po_detail_id as podid,
por.promise_date as pd,
dat.parent_id as vendid,
dat.ud_cols_id as cols,
col.col_label label,
dat.cuser as ingot
from ud_data dat
inner join ud_cols col
on dat.ud_cols_id = col.id
inner join apinvoice ap
on ap.vendor_id = dat.parent_id
inner join apinvoice_detail apd
on ap.id = apd.apinvoice_id
inner join po_detail pod
on apd.po_detail_id = pod.id
inner join po_releases por
on pod.id = por.po_detail_id

现在只需上面的 Crystal 报表中的连接选择查询并运行报表,看看是否可以获得数据...如果您无法获取数据,则数据库连接存在问题,就像您可能指向错误一样 Crystal 报表中的数据库。

您可以在 Crystal 报表中的记录选择公式中操作相同的where子句,而不是在查询本身中编写where子句

where trim(TO_CHAR(add_months(por.promise_date, -2), 'MONTH'))= upper(substr(COL.col_label, 1, length(col_label)-5)) 
and substr(por.promise_date, -2, 2) = substr(col.col_label, -2, 2)
and ud_cols_id in (94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 146)

在 crystal 中,您许多需要更改语法以适应 crystal 语法,例如 to_char 可能不起作用。

如果您发现数据库连接本身错误,请建立正确的连接并通过粘贴整个查询来遵循该过程

关于mysql - Crystal Reports 无法正确执行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com