2014-02-18 92 views
0
ALTER proc [dbo].[K_RT_GetRatebasedonmeat] 
    @partyname int, 
    @meattype int 
AS 
BEGIN 
    SELECT 
     CASE WHEN PE.meattype <> (SELECT meattype 
           FROM K_RT_PartyNameYearly 
           WHERE partyname = @partyname) THEN 0 
      ELSE ISNULL(PE.rateperkg, 0) 
     END AS rateperkg 
    FROM 
     K_RT_PartyNameYearly PE 
    INNER JOIN 
     K_RT_PartyName PN ON PE.partysno = PN.sno 
    WHERE 
     PE.partysno = @partyname 
     AND PE.meattype = @meattype 
END 

出來放:比較一個列值與sql服務器中數據的相同列值?

PE.partysno PE.meattype PE.rateperkg 
36    3    150 
36    2    125 
25    2    100 

如果我通過partysno = 36和肉型= 1時,它會顯示爲0,因爲沒有該partysno

我寫了這樣的沒有數據肉型1爲我的要求,但它不正常工作。當我將partyname和meattype作爲參數傳遞時,如果K_RT_PartyNameYearly此表不包含那個partyname的肉類,那麼我想顯示0值。我怎麼寫這個?請幫幫我。

回答

0

試...

ALTER proc [dbo].[K_RT_GetRatebasedonmeat] 
    @partysno int, 
    @meattype int 
AS 
BEGIN 
if exists 
(SELECT 1 FROM K_RT_PartyNameYearly WHERE partysno = @partysno AND meattype = @meattype) 
BEGIN 
    SELECT 
    PE.partysno , 
    PE.meattype, 
    PE.rateperkg 
    FROM 
     K_RT_PartyNameYearly PE 
    WHERE 
     PE.partysno = @partysno AND PE.meattype = @meattype 
END 
ELSE 
BEGIN 

    SELECT distinct 
    partysno partysno , 
    null meattype, 
    0 AS rateperkg 
    FROM 
     K_RT_PartyNameYearly PE 
    WHERE 
     PE.partysno = @partysno 
END 
END 
+0

它givng兩個值 – santhosha

+0

給予兩個值是指一個等於@meattype和另一個不等於to..right ??? – sureshhh

+0

如果該表具有該派對名稱的肉類型,那麼它將給出rateperkg,如果不是,則它將給出兩個值爲零的 – santhosha

相關問題