sql - 多条件计算列
问题描述
我试图弄清楚什么是最好的方法:
If C="WORD":
A = 51 if B is between 0 and 2000
A = 102 if B is between 2001 and 8000
A = 204 if B is higher than 8000
AND if D is ticked (checkbox) the A value turns into half`
我需要将此列“持久化”,以便我可以在报告中使用它。
对于另一列,我使用了这个并且有效:
ALTER TABLE dbo.mytable
ADD C AS (A + B) / CASE D WHEN 1 THEN 4 ELSE 2 END;
从这个其他代码开始,但它不起作用,它仍然没有复选框的条件。
ALTER TABLE dbo.tablename
ADD FieldA AS (CASE
WHEN FieldC = "Word"
THEN
CASE
WHEN FieldB > 0 AND FieldB < =2000
THEN 102
WHEN FieldB > 2000 AND FieldB <= 8000
THEN 204
WHEN FieldB > 8000
THEN 306
ELSE NULL
END,
我该如何进行?
解决方案
您的尝试“不起作用”,因为您有两个CASE
表达式,只有一个END
. 你需要一个END
for each CASE
。
推荐阅读
- java - 在java中保留上周的子字符串日期从当天开始?
- javascript - 如何在不手动重建的情况下复制和渲染 React 元素?
- asp.net-core - 一起使用 OpenIdConnect 和 JwtBearer 身份验证
- javascript - 定时滑动文本框
- vue.js - 如何删除 !important CSS 属性?
- java - JFrame 上的多行标题
- node.js - Node.sj TypeError:req.check 不是函数
- c# - 使用 C# 从 json 文件中提取特定数据
- java - 从 Maven exec 连接到 MongoDB 失败,但不是从 jar
- kotlin - 如何在文件路径中运行带有空格的 bat 文件?