2015-03-07 2 views
0

У меня есть хранимая процедура, как это:Как вычислить столбцы в хранимой процедуре?

SELECT DISTINCT 
    C.cid 
    , C.custclientid 
    , C.client 
    , C.company 
    , C.product 
    , C.producttakendate 
    , C.total 
    , P.reciveamt 
    , P.dueamt 
    , (SELECT TOP 1 rcvdate 
     FROM paymentdata AS PD1 
     WHERE PD1.pclientid = PD.pclientid 
      AND PD1.productname = PD.productname 
     ORDER BY rcvdate DESC) AS rcvdate 
    , (SELECT TOP 1 nxtdate 
     FROM paymentdata AS PD1 
     WHERE PD1.pclientid = PD.pclientid 
      AND PD1.productname = PD.productname 
     ORDER BY rcvdate DESC) AS nxtdate 
    , (SELECT TOP 1 notepayment 
     FROM paymentdata AS PD1 
     WHERE PD1.pclientid = PD.pclientid 
      AND PD1.productname = PD.productname 
     ORDER BY rcvdate DESC) AS notepayment 
FROM 
    customermaintenance C 
LEFT OUTER JOIN 
    payment P ON C.custclientid = P.pclientid 
LEFT OUTER JOIN 
    paymentdata PD ON P.pclientid = PD.pclientid 
WHERE 
    C.custclientid = 1 AND C.product = 'Software' 
  • c.total имеет 5000
  • p.reciveamt имеет NULL
  • p.dueamt имеет NULL

У меня есть DataList, которые имеют

<asp:Label ID="nextamountLabel" runat="server" Text='<%# Eval("dueamt") %>' /> 

Я хочу, чтобы выложил outamt = 5000

то как я рассчитываю в этой процедуре?

+0

я стараюсь, C.total-p.reciveamt ..... .. но он получает NULL – Dotnet

+0

Вы не можете сделать 'int - NULL' –

+0

*** Какая конкретная система баз данных *** это? Добавьте соответствующий тег - это 'postgresql',' oracle', 'db2',' mysql', 'sql-server' или что-то еще, что вы могли бы использовать ... –

ответ

2

C.Total - COALESCE (p.reciveamt, 0)

COALESCE возвращает первый непустой он встречает в пределах своих параметров

+0

спасибо Jen R, он отлично работает, – Dotnet

+0

Не могли бы вы принять ответ? –

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