我们办公室里有一台旧的AS400,几乎没有人知道任何事情,以及一些与之互动的遗留程序。在查看某些程序时,我发现了一个包含引起我注意的查询的文件。我在使用Oracle数据库时非常擅长SQL(我在数据仓库中工作了几年,每天8小时查询Oracle),但我没有使用DB2(或RPG / SQLRPGLE,我认为这是基于我的经验)搜索)这个查询对我来说似乎完全陌生。以下是查询(为了数据安全/匿名目的略有改动):
SELECT
WDATA(CVTDATE(PRDADT,CYMD)) NAME(@PRDADT) COLHDG("Availability Date"),
WDATA(prdid.1) NAME(product) COLHDG("Product ID"),
prdsku.1 EDTCDE(4),
prcxif.2,
sum(prcval) NAME(@price) LEN(6,2)
FROM
mydb/prod T01,
mydb/pric,
mydb/vndr T02,
PARTIAL OUTER JOIN
prdid.1=prcid.2
and prdsku.1=prcsku.2
and prdid.1=vnid.3
WHERE
prdcbp=&CBP
and prdadt BETWEEN yymmdd(date("&&startdt")) AND yymmdd(date("&&enddt"))
GROUP BY
prdsku.1,
prcxif.2
ORDER BY
prdsku
我无法理解这里的一些东西。我已经收集到表名中的斜杠是separate schema/table的特定于DB2的方式,cvtdate表示我们使用名为Sequel Data Access的程序/实用程序,而EDTCDE似乎是{{3但经过数小时的研究后,我仍然无法找到一些问题的答案(主要是因为谷歌在大多数搜索中都没有解释符号):
我确信这里有一些聪明的头脑会看到这个问题并立即知道这意味着什么,但我完全不知道它是如何运作的,所以如果有的话我会很喜欢它任何见解都可以分享。
谢谢!
答案 0 :(得分:1)
这不是现在称为IBM i的RPG / RPGLE或直接SQL。
Sequel是现在由Help-systems拥有的第三方产品 https://www.helpsystems.com/product-lines/sequel
据我所知,它是一个不错的工具,但语法是特定于产品的。
我有点受过教育的猜测,在平台上有25年的历史,但没有Sequel产品的经验,同意你的想法。
cast (sum(prcval) as numeric(6,2))
WDATA
是唯一的绊脚石......一些谷歌搜索似乎表明它已经过去包含了#34;隐藏"不会在" main"中显示的列结果屏幕。可能在页面上的标题/过滤器中使用?