Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sql中大小写表达式的结果获取列值_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

从sql中大小写表达式的结果获取列值

从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

我有一个包含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级 结束于上一页


注意-将表别名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'