2015-11-16 2 views
0

У меня есть таблица с колоннами PRNumber, PRLevel, Levelstatus и TransDate
Executed следующее выражение случай,
Firstcase:Извлечение значений столбцов из результата случае выражение в SQL

select PRNumber,PRLevel,Levelstatus,Trasdate, 
    case when Levelstatus = 'PUR' 
    then prlevel - 1 
    end as [PR_level] 
from dbo.tblpr_approvalstatus where prnumber = '000005' 
 
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 

Когда Levelstatus равен PUR, я получаю PrLevel 5 из выражения case, я хочу получить Trasdate предыдущего значения PRlevel в выражении case, как показано ниже
Secondcase:

select case when PRlevel = 4 
then trasdate 
end as [Transaction_date] 
from tblpr_approvalstatus where prnumber = '000005' 

Я хочу объединить первый случай и второе выражение случай как единое выражение для извлечения значений столбцов Trasdate, когда Levelstatus = «ПУР» и предыдущее значение PRLevel.
Столбцы PRLevel, Levelstatus и TransDate имеют разные значения для каждого номера PRNumber.

+0

Какая версия SQL-сервера вы используете ?? –

+0

Я использую sql server 2005 – Kumar

ответ

0

Попробуйте что-то вроде ниже,

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' 
+0

Спасибо большое – Kumar

+0

Добро пожаловать в StackOverflow! #SOReadyToHelp BTW, если вы повышаете мой пост, вы получите значок бронзы «Supporter» для вашего первого взлома. – pedram

0

Добавить выражение:

(SELECT Trasdate ОТ tblpr_approvalstatus а2, где a2.prnumber = a1.prnumber и a2.prlevel = случай, когда a1.Levelstatus = 'ПУР' затем a1.prlevel - 1 конец) AS prev

Примечание - добавьте псевдоним таблицы a1 к существующей таблице в предложении from.

+0

Большое спасибо – Kumar

Смежные вопросы