Anteilsberechnung ergibt immer 0 [MSSQL]

HRGS85

Benutzer
Beiträge
23
Hi zusammen,

ich möchte mir für jede Artikelnummer (No_) anschauen, wie häufig dieser Artikel in meiner Liste vorkommt und dann diese Anzahl durch die Anzahl aller Artikel teilen. Also möchte ich einfach nur den Anteil eines Artikels an der gesamten Anzahl an Artikel berechnen. Ich bekomme bei der Anteilsbereichnung:

count(distinct(s."Document No_"))/(select count(distinct(s."Document No_")) from dbo."GS GmbH$Sales Invoice Line" swhere (s."Posting Date" between '2014-06-10 00:00:00' and '2014-12-10 23:59:59'))

jedoch nur 0 heraus. Warum zeigt mir SQL keine Nachkommastellen an und wie bekomme ich das hin?

SQL-Abfrage
  1. SELECT Distinct(s."No_"), count(distinct(s."Document No_"))/(select count(distinct(s."Document No_")) from dbo."GS GmbH$Sales Invoice Line" s
  2. where (s."Posting Date" between '2014-06-10 00:00:00' and '2014-12-10 23:59:59'))
  3. FROM dbo."GS GmbH$Sales Invoice Line" s
  4. LEFT JOIN dbo."GS GmbH$Item" i ON s."No_" = i."No_"
  5. LEFT JOIN dbo."GS GmbH$Sales Invoice Header" o ON s."Document No_" = o."No_"
  6. Where (s."Posting Date" between '2014-06-10 00:00:00' and '2014-12-10 23:59:59')
  7. and s."Shortcut Dimension 1 Code" like '0000'
  8. and s."Posting Group" = 'HANDEL'
  9. Group by s."No_"


Wäre schön wenn jmd was wüsste!

BG
Henrik
 
Werbung:
Deine count() Funktion liefert immer einen Integer zurück weil ja schließlich nur ganze Zahlen dabei raus kommen können. Bei der anschließenden Division bekommst du dann einen gerundeten Wert. Du hast eigentlich nur zwei Möglichkeiten:
a) Du konvertierst die Werte mit cast() in FLOAT oder ähnliches und nimmst erst dann die Division vor.
b) Du multiplizierst den Ausgangswert mit einer Zahl und teilst danach. Aus diesem Wert kannst du später die Nachkommastellen bestimmen oder du konvertierst ihn zum Schluss in ein Format mit Nachkommastellen.
 
Werbung:
Zurück
Oben