如何把加了Case的某列,作为变量使用?
合同表(ContractTable)中有合同起始日(LeaseDateFrom)和合同终止日(LeaseDateTo)。一般来说合同期限整年整年的,那么LeaseDateFrom和 LeaseDateTo之间的日期相差1年、2年、3年。。。。。。
现在出现了特殊情况,例如:LeaseDateFrom是2017-5-1,LeaseDataTo是2018-12-31,相差不是整年。
我希望如果两个日期相差不是整年的时候,给LeaseDateFrom加一个Case,变成新的一列“time1”,让这个time1增加到和LeaseDateTo保持相差是整年的关系。
也就是我把LeaseDateFrom (2017-5-1)用time1代替。time1的值经过Case的运算后为2017-1-1,这样time1和 LeaseDateTo之间相差正好又是整年了,之后就用time1取代LeaseDateFrom进行运算。
============问题================
因为我的SQL语句中含有海量的这种time1,如果全部都傻傻的每次都用Case判断一次,代码需要写几千行。
因此,我觉得应该把time1先以变量的形式,声明在SQL语句的最开头。
然而,图1中的time1并不能把象变量或字段那样直接在 SQL中使用,否则就会出现错误提示:“列名time1无效”。请问该如何处理呢?
=============代码=====================
============图1================

现在出现了特殊情况,例如:LeaseDateFrom是2017-5-1,LeaseDataTo是2018-12-31,相差不是整年。
我希望如果两个日期相差不是整年的时候,给LeaseDateFrom加一个Case,变成新的一列“time1”,让这个time1增加到和LeaseDateTo保持相差是整年的关系。
也就是我把LeaseDateFrom (2017-5-1)用time1代替。time1的值经过Case的运算后为2017-1-1,这样time1和 LeaseDateTo之间相差正好又是整年了,之后就用time1取代LeaseDateFrom进行运算。
============问题================
因为我的SQL语句中含有海量的这种time1,如果全部都傻傻的每次都用Case判断一次,代码需要写几千行。
因此,我觉得应该把time1先以变量的形式,声明在SQL语句的最开头。
然而,图1中的time1并不能把象变量或字段那样直接在 SQL中使用,否则就会出现错误提示:“列名time1无效”。请问该如何处理呢?
=============代码=====================
select
(case
when DATEDIFF (MONTH,LeaseDateFrom,DATEADD(day,1,LeaseDateTo))%12 =0
then LeaseDateFrom
else DATEADD(YEAR,-(DATEDIFF (MONTH,LeaseDateFrom,DATEADD(day,1,LeaseDateTo))/12+1),DATEADD
(DAY,1,LeaseDateTo))
end) as time1
,LeaseDateFrom
,LeaseDateTo
,DATEDIFF (MONTH,time1,DATEADD(day,1,LeaseDateTo)) as 'time1到LeaseDateTo的月份'
,DATEDIFF (MONTH,LeaseDateFrom,DATEADD(day,1,LeaseDateTo)) as 'LeaseDateFrom到LeaseDateTo的月份'
from ContractTable============图1================

...全文
相关推荐
case 后面可以加判断句吗?
### 关于 `case` 后是否可以加判断句的知识点在 JavaScript 中,`switch` 语句是一种基于不同条件来执行不同代码块的有效方法。
MySQL 的CASE WHEN 语句使用说明
举个简单的例子,假设我们有一个`employees`表,包含`salary`列,我们可以用CASE WHEN来根据薪水划分员工等级:```sqlSELECT name, CASE WHEN salary
详细解析 mysql 中的 case when 语句的使用
- 动态地改变查询结果中的列值等。
mysql 列转行,合并字段的方法(必看)
在MySQL中,列转行是一种常见的数据操作,特别是当需要将单个列的数据按照特定条件拆分成多行显示时。本文档介绍了两种方法来实现这个目标:使用`MAX(CASE ... END)`和`GROUP_CON
MySQL的CASE WHEN语句的几个使用实例
最后,我们看看如何在SELECT查询中使用CASE WHEN来根据条件返回不同的列。


