Crystal Reports中的嵌套SQL命令

时间:2012-05-10 08:35:08

标签: sql crystal-reports sqlcommand crystal-reports-xi

是否可以在Crystal Reports中的另一个命令上使用命令的结果?

举个例子,我有一个命令

SELECT foo FROM bar WHERE foo2 IN (list)

保存为command_1
现在我想要

SELECT xfoo FROM xbar WHERE xfoo2 IN (command_1.foo)

在一个简单的例子中,我意识到我可以将它们组合到

SELECT xfoo FROM xbar WHERE xfoo2 IN (SELECT foo FROM bar WHERE foo2 IN (list))

但在我的真实案例中,由于嵌套的SELECT太多而导致错误。

我的真实世界的例子,如果有人想要提供具体而不仅仅是一般答案:

现有命令保存为pnr

SELECT DISTINCT rem.pop_pid
FROM a_remiss rem
INNER JOIN a_bestall best ON rem.arem_id = best.arem_id
JOIN a_prov prov ON best.apro_id = prov.apro_id
WHERE prov.pro_provdat >= {ts '2006-01-01 00:00:00'}
AND prov.pro_provdat <= {ts '2011-12-31 23:59:59'}
AND best.ana_analyskod IN ('PKREAT', 'PKREA', 'PKREAN')
AND (
rem.pop_pid LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] 1[89]'
OR rem.pop_pid LIKE '[01][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] 20'
)

想要额外的新命令:

SELECT arem_id, apro_id, ana_analyskod
FROM a_bestall
WHERE ana_analyskod IN('ABSBIK', 'BCRPS')
AND arem_id IN (
SELECT arem_id
FROM a_remiss
WHERE rem_ank_dttm >= {ts '2006-01-01 00:00:00'}
AND rem_ank_dttm <= {ts '2012-01-31 23:59:59'}
AND pop_pid IN pnr.pop_pid
)

编辑:修复了现在使嵌套的SELECT工作的代码错误,但是能够嵌套命令仍然很好。

1 个答案:

答案 0 :(得分:1)

简短的回答是否定的,命令不能嵌套。

如果您可以在查询工具中使用语法,则它应该在Command中工作。

如果仍然出现语法错误,请考虑使用其他数据库驱动程序。我注意到了“本地人”。驱动程序比ODBC做得更好。