Sql 返回带有两个条件的值的大小写表达式
当AAALTLCHANGEVALUE等于“手动速率”时,我需要返回初始AAALTLCHANGEREASON值。所以在这个例子中,我需要返回'classneeded'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 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;