2011-03-16 58 views
0

我有這樣一個SQL;在SQL中獲取兩次值

SELECT B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2 AS 'TEKLIF',B.MUS_K_ISIM, 
dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'11/03/2011', '11/03/2011'), 
(CASE WHEN B.DOVIZ_KOD = 21 THEN 'EUR' WHEN B.DOVIZ_KOD = 2 THEN 'USD' WHEN B.DOVIZ_KOD = 1 THEN 'TL' END) AS 'KUR', 
D.AVUKAT, 
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN 
(SELECT ICRA_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP) 
ELSE ' ' END) AS 'ICRA TARİHİ', 
(CASE WHEN D.HESAP IN (SELECT T_HESAP_NO FROM TAKIP) THEN 
(SELECT HACIZ_TAR FROM TAKIP WHERE T_HESAP_NO = D.HESAP) 
ELSE '' END) AS 'HACİZ TARİHİ' 
FROM YAZ..MARDATA.S_TEKLIF B, AVUKAT D 
WHERE B.HESAP_NO = D.HESAP 
AND ISNULL(dbo.fngcodeme(B.HESAP_NO, B.DOVIZ_KOD, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,'11/03/2011', '11/03/2011'),0) > 0 
GROUP BY B.HESAP_NO, B.TEKLIF_NO1 + '/' + B.TEKLIF_NO2,B.DOVIZ_KOD ,B.MUS_K_ISIM, D.AVUKAT, D.HESAP 

這是我的表格;

S_TEKLIF (B) AVUKAT  TAKIP 

HESAP_NO (PK) HESAP(PK) T_HESAP_NO (PK) 
TEKLIF_NO1  MUS_K_ISIM ICRA_TAR 
TEKLIF_NO2  AVUKAT  HACIZ_TAR 
MUS_K_ISIM    
DOVIZ_KOD    

而這裏是我的dbo.fngcodeme函數;

ALTER FUNCTION [dbo].[fngcodeme] 
(
    @HESAP INT, @DOV INT, @TEKLIF VARCHAR(10), @BAS VARCHAR(10), @BIT VARCHAR(10) 
) 
RETURNS FLOAT 

AS 
BEGIN 

DECLARE @Result FLOAT 

SET @Result = (SELECT SUM(TUTAR) 
    FROM YAZ..MARDATA.M_GHAREKET 
    WHERE TEMEL_HESAP = @HESAP 
    AND DOVIZ_KOD = @DOV 
    AND REF_KOD = 'GC' 
    AND BACAK_GRUP = 'PERT' 
    AND ISL_KOD = 1 
    AND ACIKLAMA LIKE '%' + @TEKLIF + '%' 
    AND ISL_TAR >= CONVERT(DATETIME, + '' + @BAS + '',103) 
    AND ISL_TAR <= CONVERT(DATETIME, + '' + @BIT + '',103) 
    ) 

RETURN @Result 

END 

我頂SQL工作完美,但剛開兩種價值使用相同的數據。

enter image description here

凡的錯誤,我可以做什麼?

此致

Soner

+6

它與數據不同 - TEKLIF不同(您在B表中有多個相應的記錄)。 – Arvo

回答

5

這是不一樣的,TEKLIF列不同。你在該專欄上分組,因此你會得到兩個不同的結果。

+0

你有眼睛像鷹:)謝謝..! –