2011-02-10 51 views
2

私はこのような良いSQLを持っています。SQLクエリの別個の日付

SELECT B.HESAP_NO, A.TEKLIF_NO1 + '/' + A.TEKLIF_NO2 AS 'TEKLIF', 
B.MUS_K_ISIM, CONVERT(VARCHAR(10),A.ISL_TAR,103) AS 'TARIH', 
SUM(ISNULL(CAST(A.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(A.FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.BSMV AS FLOAT),0)+ISNULL(CAST(A.GECIKME_FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 
    (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, CONVERT(VARCHAR(10),C.ICRA_TAR,103) AS 'İCRA TARİHİ', CONVERT(VARCHAR(10),C.HACIZ_TAR,103) AS 'HACİZ TARİHİ' 

FROM YAZ..MARDATA.BIR_TAHSIL A, YAZ..MARDATA.S_TEKLIF B, TAKIP C, AVUKAT D, P_TAKIP_SR E 

WHERE A.TEKLIF_NO1 = B.TEKLIF_NO1 
AND A.TEKLIF_NO2 = B.TEKLIF_NO2 
AND B.HESAP_NO = D.HESAP 
AND D.HESAP = A.HESAP_NO 

そして、このようなコードで日付範囲を追加します。

if (txtBoxText1 != "") 
    { 
     strQuery = strQuery + " AND A.ISL_TAR >= @S_TARIH_B"; 

     dt_stb = DateTime.Parse(txtBoxText1); 
     myCommand.Parameters.AddWithValue("@S_TARIH_B", dt_stb); 
    } 

    if (txtBoxText2 != "") 
    { 
     strQuery = strQuery + " AND A.ISL_TAR <= @S_TARIH_S"; 
     dt_sts = DateTime.Parse(txtBoxText2); 
     myCommand.Parameters.AddWithValue("@S_TARIH_S", dt_sts); 
    } 

は最後のiについてGROUP BY

GROUP BY B.HESAP_NO, A.TEKLIF_NO1 + '/' + A.TEKLIF_NO2,A.ISL_TAR,B.DOVIZ_KOD, B.HESAP_NO, B.MUS_K_ISIM, D.AVUKAT, C.ICRA_TAR, C.HACIZ_TAR 

を追加します。しかし、このような例については、このクエリgettig結果(一部の一部)

HESAP_NO  MUS_K_ISIM  YATAN Date 
889   2M LOJİSTİK  7090 28/03/2010 

ただごとに1つのレコードを取得28/03/2010。しかし、このデータベースでは、2つのレコードがあります。

HESAP_NO  MUS_K_ISIM  YATAN Date 
889   2M LOJİSTİK  5000 28/03/2010 
889    2M LOJİSTİK  2090 28/03/2010 

ご覧のとおり(= 7090 5000 + 2090)すべてYATAN(番号)を追加し、一つのレコードトップクエリを取得。

私が望むのは、2番目の結果と同じ日付にすべてのレコードを取得することです。

HESAP_NO  MUS_K_ISIM  YATAN Date 
    889   2M LOJİSTİK  5000 28/03/2010 
    889    2M LOJİSTİK  2090 28/03/2010 

どうすればいいですか?

Regars、 Soner

答えて

2

これが原因で、あなたのSELECTであなたのSUM関数の起こっている:また、あなたができるはずである意味どの

ISNULL(CAST(A.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(A.FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.BSMV AS FLOAT),0)+ISNULL(CAST(A.GECIKME_FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.GECIKME_BSMV AS FLOAT),0) AS 'YATAN', 

SUM(ISNULL(CAST(A.ODENEN_ANAPARA AS FLOAT),0)+ISNULL(CAST(A.FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.BSMV AS FLOAT),0)+ISNULL(CAST(A.GECIKME_FAIZ AS FLOAT),0)+ 
    ISNULL(CAST(A.GECIKME_BSMV AS FLOAT),0)) AS 'YATAN', 

でこれを交換してみてくださいGROUP BY句を削除します。これにより、テーブル内のユニークな結果の結果が得られます。

+0

あなたはabsolutly右nybbler ..です! –

1

私はあなたのコードにし、あなたの説明に表示されるものと、あなたはおそらくnybblerを示唆しているようSUM()を削除し、GROUP BYにこれらの列を追加する必要があります。

A.ODENEN_ANAPARA, A.FAIZ, A.BSMV, A.GECIKME_FAIZ, A.GECIKME_BSMV