【发布时间】:2017-05-08 22:30:45
【问题描述】:
我们使用基于 ColdFusion 的住房软件,并使用 SQL 在我们的报告中创建数据库函数。我正在编写一个自定义报告以尝试从另一列中减去一列:更具体地说,从 OCCUPANCY 中减去 COUNT_OF_INSPECTION_TYPE。 OCCUPANCY 列基于以下代码:
CONVERT(INT
, CASE
WHEN tblHalls.HALLNAME = 'Hall1' THEN 198
WHEN tblHalls.HALLNAME = 'Hall2' THEN 430
WHEN tblHalls.HALLNAME = 'Hall3' THEN 333
END
)
当我尝试新功能OCCUPANCY - COUNT_OF_INSPECTION_TYPE 时,出现错误:
无法调用 CFC - 执行数据库查询时出错。 [Macromedia][SQLServer JDBC 驱动程序][SQLServer]列名无效 '占用'。
我不确定我的解释是否正确。我很感激你能提供的任何帮助。
【问题讨论】:
-
究竟是什么样的功能?哪个应用程序抛出错误?在不了解更多信息的情况下,这听起来像是 SQL 或报告问题。但是,如果没有更多细节,很难给出建议。
-
这是我收到的错误 ERROR MESSAGE: Unable to call CFC - Error Executing Database Query。错误详细信息:[Macromedia][SQLServer JDBC 驱动程序][SQLServer]列名“OCCUPANCY”无效。
-
(编辑) 哦...您不能在同一级别的计算中使用别名(即在定义之前)。选择是 a) 在计算中重复整个 case 语句或 b) 使用另一个选项,如 CTE、派生查询、`apply 运算符等。见sqlmag.com/blog/tip-apply-and-reuse-column-aliases
-
你能给我举个例子来说明你在说什么吗?我很难理解。我的 SQL 知识非常基础。
-
SQL 不按您编码的顺序处理事物。基本流程是:FROM >> WHERE >> GROUP BY >> HAVING >> SELECT >> ORDER BY >> TOP。您无法在更高的进程中访问变量。
标签: sql-server coldfusion