Sql 返回带有两个条件的值的大小写表达式

Sql 返回带有两个条件的值的大小写表达式,sql,sql-server,data-warehouse,Sql,Sql Server,Data Warehouse,当AAALTLCHANGEVALUE等于“手动速率”时,我需要返回初始AAALTLCHANGEREASON值。所以在这个例子中,我需要返回'classneeded' AAALTLCHANGEVALUE AAALTLCHANGEREASON CREATEDDATETIME ManualCoded New Customer 09/17/2019 Manual Rate Class

当AAALTLCHANGEVALUE等于“手动速率”时,我需要返回初始AAALTLCHANGEREASON值。所以在这个例子中,我需要返回'classneeded'

AAALTLCHANGEVALUE   AAALTLCHANGEREASON         CREATEDDATETIME     
ManualCoded              New Customer           09/17/2019          
Manual Rate              Class needed           09/18/2019
CWI Inspection           Reweigh                09/19/2019
Manual Rate              Insurance Added        09/20/2019
我尝试过这个case表达式,但没有成功:

case

when  [AAALTLCHANGEVALUE] = 'manual rate' then[AAALTLCHANGEREASON]
when  [AAALTLCHANGEVALUE] = 'manual rate' then MIN[CREATEDDATETIME]

else null

end
感谢您的帮助。

首先选择所有“手动费率”,然后确保没有其他人比该行早到

您可以通过以下方式使用top和order:


大小写表达式。T-SQL中没有Case语句。您当前的Case表达式检查AAALTLCHANGEVALUE是否为手动速率,然后执行某些操作。。。然后它再次检查相同的东西?第二个条件永远不会触发,因为第一个条件已经是手动速率。也许我不明白你想要什么。你能分享你对样本数据的期望结果吗?也许能用更多的例子来充实样本数据,这样我们才能更好地理解?Larnu,语义与我的问题无关。我需要语法/逻辑方面的帮助。你能添加你想要的输出吗,所以不管怎样,这个语句没有意义,对不起,目前你永远无法获得CreationDate,你必须将你的案例分开…语义总是很重要的,否则我们不知道你的逻辑是什么
 SELECT AAALTLCHANGEREASON
 FROM YourTable t1
 WHERE AAALTLCHANGEVALUE = 'Manual Rate'
   AND NOT EXISTS (SELECT 1
                   FROM YourTable t2
                   WHERE t2.CREATEDDATETIME < t1.CREATEDDATETIME
                     AND AAALTLCHANGEVALUE = 'Manual Rate')
select TOP AAALTLCHANGEREASON
from t
where AAALTLCHANGEVALUE = 'manual rate'
order by CREATEDDATETIME;