2017-08-05 5 views
-10

ich einen Tisch haben, durch die ich einige Daten jetzt unterkombinieren mehrere Zeilen in einer SQL

col1  col2 col3 col4 col5 col6 col7 
------------------------------------------------------------ 
SA106141 ABC test 1400 0  0   58800 
SA106141 ABC test 1100 53963 54 54017 
SA106141 ABC test 3000 141184 141 141325 
SA106141 ABC test 2800 154548 155 154703 
SA106141 ABC test 1500 79042 79 79121 
SA106141 ABC test -9800 -487967 0 0 

aber die gewünschte Ausgangs

col1 col2 col3 col4 col5 col6 col7 
SA106141 ABC test 0  -59229 429  0 

gegeben bin immer sein sollte, Dies ist die Abfrage Ich habe so weit:

SELECT DISTINCT 
    col1, col2, col3, 
    ISNULL(SUM(QTY), 0) AS col4, 
    ISNULL(SUM(NET_AMT), 0) AS col5, 
    ISNULL(SUM(STT), 0) AS col6, 
    CASE 
     WHEN ISNULL(SUM(grand_total), 0) <= 0 
      THEN 0 
      ELSE ISNULL(SUM(grand_total), 0) 
    END AS col7 
FROM 
    (SELECT 
     Dates, TR_DT, TR_NO, SA, GRP, ID, SAID, Exch, Code, 
     Client, SCRIPT, BUYSELL, QTY, NT_RT, NET_AMT, 
     QTY * NT_RT AS New_Net_amt,STT, 
     ISNULL(NET_AMT + STT,QTY * NT_RT) AS grand_total, 
     CAST(SA + GRP + ID + SAID AS VARCHAR(50)) AS testid 
    FROM 
     testtable 
    GROUP BY 
     CAST (SA + GRP + ID + SAID AS VARCHAR(50)), Dates, TR_DT, 
     TR_NO, Exch, Code, Client, SCRIPT, BUYSELL, QTY, 
     NT_RT, NET_AMT, STT, SA, GRP, ID, SAID) t 
GROUP BY 
    t.testid, t.Dates, t.Client, t.SCRIPT 
ORDER BY 
    t.Client, t.testid, t.SCRIPT, t.Dates ASC 

Bitte helfen

+3

Können Sie die Logik erklären, die benötigt wird, um die Zeilen zu kombinieren? Was genau ist das Problem mit der Abfrage, die Sie derzeit haben? – Mureinik

+0

die Logik ist col2 haben mehrere Datensätze von ABC Ich brauche nur einzelne ABC und in dieser Summe von col4 in col4 und col5 und col 6 und abc kann mit mehreren Benutzern wie Test 1 Test 2, Test3 soi brauchen eine Abfrage, die test1 abc zeigt col4 gesamt col5 gesamt col6 gesamt –

+2

die Frage, die Sie eingefügt haben, scheint keine Beziehung mit der Logik zu haben, die Sie hier erklärt haben. Es gibt viel mehr Spalten in dieser Abfrage verwendet !!! – Hybridzz

Antwort

0

Ist das wonach Sie suchen?

select 
    col1, col2, col3, 
    sum(isnull(col4, 0)) col4, 
    sum(isnull(col5, 0)) col5, 
    sum(isnull(col6, 0)) col6, 
    sum(isnull(col7, 0)) col7 
FROM 
    testtable 
group by 
    col1, col2, col3 
+3

Ihnen fehlt eine 'FROM dbo.SomeTable' Klausel hier ... –

+0

Yea aktualisiert das. – Hybridzz

Verwandte Themen