sql-server - 计算新变量
问题描述
我有以下代码,并希望创建一个计算 FCT_MAX_CHARGES 和 CPT_MAX_CHARGES 变量之间差异的结果列。我正在寻找可以在下表中生成 CPT_FCT DELTA 列的代码。
USE EMTCQIData
SELECT CONC.[ID Number] as FIN, CONC.table,
CASE
WHEN CONC.table like '%level 5%' THEN '99285'
WHEN CONC.table like '%level 4%' THEN '99284'
END FCT_MAX,
CASE
WHEN CONC.table like '%level 5%' THEN $200
WHEN CONC.table like '%level 4%' THEN $100
END FCT_MAX_CHARGES,
CPT.CPT,
CASE
WHEN CPT.CPT like '99285%' THEN $200
WHEN CPT.CPT like '99284' THEN $100
END CPT_MAX_CHARGES
FROM CPT_MASTER as CPT
Expected Results
ID | FCT_MAX| FCT_MAX_CHARGGES| CPT | CPT_MAX_CHARGES| CPT_FCT DELTA
1 99284 200 99284 100 100
解决方案
您不能在同一范围内引用另一个表达式中的别名,但解决此问题的一种方法是在另一个级别执行第一组表达式,例如 CTE 或子查询:
;WITH cte AS
(
SELECT
CONC.[ID Number] as FIN,
CONC.table,
CASE
WHEN CONC.table like '%level 5%' THEN '99285'
WHEN CONC.table like '%level 4%' THEN '99284'
END AS FCT_MAX,
CASE
WHEN CONC.table like '%level 5%' THEN $200
WHEN CONC.table like '%level 4%' THEN $100
END AS FCT_MAX_CHARGES,
CPT.CPT,
CASE
WHEN CPT.CPT like '99285%' THEN $200
WHEN CPT.CPT like '99284' THEN $100
END AS CPT_MAX_CHARGES
FROM CPT_MASTER as CPT
)
SELECT
FIN,
[table],
FCT_MAX,
CPT,
FCT_MAX_CHARGES,
CPT_MAX_CHARGES,
CPT_FCT DELTA = FCT_MAX_CHARGES - CPT_MAX_CHARGES
FROM cte;
推荐阅读
- javascript - 在这个 jQuery 验证案例中,如何避免重复 isValid?
- typescript - 如何在打字稿中分配通用条件推断类型的值?
- python - 用 Selenium python 中的 bb 代码填充 textarea
- python - 如何从pyqt5中的父MainWindow类继承自我
- angular - HeaderComponent.logout2 处未定义的属性“注销”
- javascript - 在 Angular 6 应用程序中通过 javascript 更改 base64 图像大小并使用不同的扩展名(png、jpg、gif 等)下载
- javascript - 如何映射对象属性
- mysql - 根据当前表和每个单独的行向 SQL SELECT 查询输出添加额外的列
- ffmpeg - 如何使用 FFMPEG 提取无损图像序列并将它们传送到 mozjpeg 的 cjpeg?
- java - 在 android 4.4 中注意到浮动操作按钮周围的奇怪圆圈?