2011-02-10 9 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); 
    } 

마지막을 위해 내가 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 

그냥 하나 개의 기록을지고 28/03/2010. 그러나 데이터베이스에는이 날짜에 두 개의 레코드가 있습니다.

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 

(5000 + 2090 = 7090) 모든 YATAN (숫자)을 추가하고 하나의 레코드에 최상위 쿼리를 기록합니다.

내가 원하는 것은 두 번째 결과와 같은 날짜에 모든 레코드를 가져 오는 것입니다.

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, 네르

답변

2

이 때문에 당신의 선택에 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

을 ..! –

1

난 당신의 코드와 설명에 무엇을보고, 당신은 아마 nybbler 제안했다으로 SUM()을 제거하고 GROUP BY에 이러한 열을 추가해야 올린 사람 : 당신은 절대적 권리 nybbler 있습니다

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