从sql中大小写表达式的结果获取列值
我有一个包含PRNumber、PRLevel、Levelstatus和TransDate列的表 执行以下case表达式, 第一种情况: 我希望将第一个case和第二个case表达式组合为一个表达式,以便在Levelstatus='PUR'和PRLevel的上一个值时获取Trasdate列的值。 PRLevel、Levelstatus和TransDate列对于每个PRNumber具有不同的值。添加表达式: 从tblpr_approvalstatus a2中选择Trasdate,其中a2.prnumber=a1.prnumber,a2.prlevel=case,当a1.Levelstatus='PUR' 然后是a1.PR1级 结束于上一页从sql中大小写表达式的结果获取列值,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一个包含PRNumber、PRLevel、Levelstatus和TransDate列的表 执行以下case表达式, 第一种情况: 我希望将第一个case和第二个case表达式组合为一个表达式,以便在Levelstatus='PUR'和PRLevel的上一个值时获取Trasdate列的值。 PRLevel、Levelstatus和TransDate列对于每个PRNumber具有不同的值。添加表达式: 从tblpr_approvalstatus a2中选择Trasdate,其中a2.prnum
注意-将表别名a1添加到from子句上的现有表中。尝试以下操作
SELECT PRNumber
,PRLevel
,Levelstatus
,Trasdate
,CASE
WHEN Levelstatus='PUR' THEN prlevel- 1
END AS [PR_level]
,(
SELECT Trasdate
FROM tblpr_approvalstatus TAS
WHERE TAS.prnumber = tblpr_approvalstatus.prnumber
AND TAS.prlevel = CASE
WHEN tblpr_approvalstatus.Levelstatus='PUR' THEN
tblpr_approvalstatus.prlevel
- 1
END
) AS Prev
FROM tblpr_approvalstatus
WHERE prnumber = '000005'
您使用的是哪个版本的sql server?我使用的是sql server 2005欢迎使用StackOverflow!顺便说一句,如果你投票支持我的帖子,你将在第一次投票时获得一枚铜牌“支持者”徽章。 PRNumber PRLevel Levelstatus Trasdate PR_Level 000005 1 DM 2015-06-15 10:07:33.467 NULL 000005 2 PRE 2015-06-15 11:09:08.980 NULL 000005 4 IMM 2015-06-19 12:02:56.600 NULL 000005 5 PUR 2015-06-19 14:37:43.650 4 000005 3 FIN 2015-06-18 21:07:57.933 NULL
select case when PRlevel = 4
then trasdate
end as [Transaction_date]
from tblpr_approvalstatus where prnumber = '000005'
SELECT PRNumber
,PRLevel
,Levelstatus
,Trasdate
,CASE
WHEN Levelstatus='PUR' THEN prlevel- 1
END AS [PR_level]
,(
SELECT Trasdate
FROM tblpr_approvalstatus TAS
WHERE TAS.prnumber = tblpr_approvalstatus.prnumber
AND TAS.prlevel = CASE
WHEN tblpr_approvalstatus.Levelstatus='PUR' THEN
tblpr_approvalstatus.prlevel
- 1
END
) AS Prev
FROM tblpr_approvalstatus
WHERE prnumber = '000005'