2017-07-26 4 views
0

Derzeit in einem Crystal Report, habe ich jede Bestellung gruppiert, wo der Benutzer die Bestellposten in der Gruppe Bestellungen angezeigt wird.SQL Server 2000: wie Zwischensumme für Bestellposten abgerufen wird (Rollup nicht vorhanden)

Ich habe ein laufendes Gesamtfeld für eine Zwischensumme für alle Preise der Auftragspositionen erstellt. Aber ich möchte einen Parameter für den Endbenutzer machen, um auszuwählen, ob der Preis > oder < als ein bestimmter Betrag ist.

Und was ich dachte, könnte die beste Lösung sein, berechnen Sie die Zwischensumme in der gespeicherten Prozedur und übergeben Sie es an den Bericht, um den Parameter aus zu erstellen.

Aber wie es aussieht, enthält SQL Server 2000 die Funktion "ROLLUP" in späteren Versionen nicht.

+0

SQL Server 2000 *** weit über tot *** - es mumifizierte ist. Es war Zeit, sich von diesem ** für eine loooooooong Zeit ** jetzt zu verbessern! –

+0

Yea no kidding ............. leider macht meine Firma eine massive Aktualisierung von SQL 2000 auf 2016 und bis Dezember bin ich im Grunde damit fest, so wirklich etwas Hilfe, anstatt das Problem zu ignorieren sei großartig. – tfenwick11

Antwort

0

es herausgefunden:

select TS.Order_no, part_no, cost_per_line, 
     case when Order_no = (select top 1 Order_no from #tempsales 
          where cust_po = TS.cust_po 
          order by Order_no asc) 
      then (select sum(cost_per_line) 
        from #tempsales 
        where Order_no <= TS.Order_no 
         and cust_po = TS.cust_po) 
      else '0' end as 'Sub Total', 
     case when Order_no = (select top 1 Order_no from #tempsales 
          where cust_po = TS.cust_po 
          order by Order_no asc) 
      then (select CAST(ROUND(SUM(cost_per_line), 2, 1) AS DECIMAL(18, 2)) 
         from #tempsales) 
      else '0' end as 'Grand Total' 
from #tempsales TS