sql - 带有 SQL 表达式/子查询的 Crystal Reports 中的“无法绑定多部分标识符”
问题描述
我正在使用 Crystal Reports,它使您能够创建称为 SQL 表达式的东西。它们基本上是子查询,但受到限制,因此每个 SQL 表达式只能返回一个标量值。欲了解更多信息,请访问:http: //www.cogniza.com/wordpress/2005/11/07/crystal-reports-using-sql-expression-fields/
引用的文章非常明确地说:
If you are using a SQL Expression as a subquery and wish to link it to the
detail row of your main report, do not include the table you wish to link to
in the FROM clause of the subquery. For example:
(
SELECT MAX("FLOWSHEET"."VALUE")
FROM FLOWSHEET
WHERE "FLOWSHEET"."ID" in ('11')
AND "FLOWSHEET"."IP_ID" = "HOSPITAL_VISIT"."IP_ID"
)
The above query links to the HOSPITAL_VISIT table in the main report by
linking to the IP_ID field. To accomplish this, HOSPITAL_VISIT is omitted
from the FROM clause in the query.
我的报告中有一个主要查询:
SELECT
HIFIS_HousePlacements.MovedInDate,
vw_ClientBasics.LastName,
vw_ClientBasics.FirstName,
HIFIS_Clients_HousePlacements.ClientID
FROM
HIFIS_Clients_HousePlacements
INNER JOIN HIFIS_HousePlacements ON HIFIS_Clients_HousePlacements.HousePlacementID=HIFIS_HousePlacements.HousePlacementID
INNER JOIN vw_ClientBasics ON HIFIS_Clients_HousePlacements.ClientID=vw_ClientBasics.ClientID
现在我想添加一个 SQL 表达式
(
SELECT TOP 1 AssessmentAcuityType
FROM vw_IntakeAssessmentAcuityScores
WHERE vw_IntakeAssessmentAcuityScores.ClientID=HIFIS_Clients_HousePlacements.ClientID
AND vw_IntakeAssessmentAcuityScores.AssessmentTool = 'SPDAT'
AND vw_IntakeAssessmentAcuityScores.AssessmentToolType NOT LIKE '%VI%'
AND vw_IntakeAssessmentAcuityScores.IntakeDate BETWEEN DATEADD(month,-6,HIFIS_HousePlacements.MovedInDate) AND HIFIS_HousePlacements.MovedInDate
ORDER BY IntakeID DESC
)
当我这样做时,我得到了错误The multi-part identifier HIFIS_HousePlacements.MovedInDate cannot be bound
因此,尽管我知道我没有在子查询中定义 HIFIS_HousePlacements,但 SQL 表达式字段的规则表明我不应该这样做。谁能帮助我了解如何解决此错误?
解决方案
我已经解决了部分问题。
部分问题取决于方程边的顺序。
所以我确定这会导致错误:
(
SELECT TOP 1 AssessmentAcuityType
FROM vw_IntakeAssessmentAcuityScores
WHERE vw_IntakeAssessmentAcuityScores.ClientID=HIFIS_Clients_HousePlacements.ClientID
)
而这并不
(
SELECT TOP 1 AssessmentAcuityType
FROM vw_IntakeAssessmentAcuityScores
WHERE HIFIS_Clients_HousePlacements.ClientID=vw_IntakeAssessmentAcuityScores.ClientID
)
推荐阅读
- ios - ReactNative - SocketRocket:处于调试模式。允许连接到任何根证书
- python - 即使在处理 302 状态时,Scrapy 也会重定向我
- batch-file - 使用唤醒词的 Windows 自动化和语音控制
- android - 如何在 Android Pie 中获取 pdf 文件的实际文件路径?
- java - 在 Java 中检测 CapsLock
- augmented-reality - SceneView暂停后如何重新创建锚点?
- java - 如何为每个计划的方法设置一个 Hibernate 会话
- django - django - 不支持对 JSONField 的查找或不允许加入该字段
- cmake - Visual Studio 2017 的 CMake 生成问题
- vue.js - 如何使用 Vue.js SPA 将索引机器人重定向到不同的路由以服务器呈现的页面,以便对其进行爬网和索引?