2016-03-22 68 views
-2

enter image description here與具體月份

我創建4個輸入參數(2 * ID,年份和月份),即在WHERE子句中使用存儲過程查找記錄。

問題是我只是不能編寫正確的語法來獲取在某個特定月份的價值(Koeficient)。

ALTER PROCEDURE [dbo].[obrPla_DohvatiPojedineRadniciKoeficientZaObracun]  
(
    @IDFirma INT, 
    @IDRadnik INT, 
    @Godina SMALLINT, 
    @Mjesec TINYINT 
) 
AS BEGIN 

    SELECT rk.Koeficient  
    FROM RadniciKoeficient rk 
    WHERE rk.IDFirma = @IDFirma 
     AND rk.IDRadnik = @IDRadnik 
     AND DATEPART(yyyy, rk.DatumOd) = @Godina 
     AND CASE WHEN rk.DatumDo IS NOT NULL 
       THEN DATEPART(mm, rk.DatumOd) <= @Mjesec AND @Mjesec <= DATEPART(mm, rk.DatumDo) 
       ELSE DATEPART(mm, rk.DatumOd) <= @Mjesec 
      END 

END 
+0

除非你清楚地表達事情,否則你不能指望別人幫助你,對嗎? – MusicLovingIndianGirl

+0

你有什麼疑問? – massie

+0

你能舉一個例子:輸出應該是什麼 –

回答

0

個人,

我會建議你放棄參數@Godina和@Mesec,只是與像@time單一的參數去...

然後,而不是檢查年份和月份...因爲你發現價值,這些2個日期之間的

DATEPART(yyyy, rk.DatumOd) = @Godina and 
    case when rk.DatumDo is not null then 
     (DATEPART(mm, rk.DatumOd) <= @Mjesec and @Mjesec <= DATEPART(mm, rk.DatumDo)) 
     else (DATEPART(mm, rk.DatumOd) <= @Mjesec) 
    end 

只是去

@Vreme between rk.DatumOd and ISNULL(rk.DatumDo, GetDate()) 
+0

Hvala Veljac;) – user3343010

+0

Nikakav問題... uvek sam tu da pomognem :) – Veljko89

+0

我jos nesto,baca mi異常「不正確的語法靠近'<'。」 za ovaj prvi prijedlog。當我遇見我的朋友時,... ... iskreno,nemam pojma zasto。 – user3343010