You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
« Previous
Version 18
Next »
Auf dieser Seite wird die Standard SQL-View für die Statistik-Abfrage definiert.
Die Abfrage basiert auf der bei Kunden üblich eingesetzten Pivot-View. Es werden aber Fremdschlüssel ausgegeben.
Anforderungen
Die Anforderungen an statistische Daten sind für den Aussendienst sehr zentral. Im MVP des Aussendienstportals sind verschiedene Perspektiven auf statistische Daten vorgehesen. Diese werden nachfolgend beschrieben.
Perspektive | Kontext | Beschreibung | Datenbasis |
---|
Performance-Indikator | Kunden-Dashboard | Monatliche Umsatzentwicklung mit Vorjahresvergleich des ausgewählten Kunden | SQLView_vf_performanceindicator |
Topsellers | Kunden-Dashboard | Top 5 Artikel gemäss Umsatz | SQLView_vf_topsellers |
Sortiment | Detailansicht | Alle bezogenen Artikel des ausgewählten Kunden verdichtet pro Artikel. Zeitraum wählbar nach 30, 90 oder 180 Tagen oder benutzerdefinierter Zeitraum → Drilldown-Funktion auf einzelne Bewegung wünschenswert | SQLView_vf_statistics |
|
|
|
|
Performance Indikator und Topseller sind auch denkbar für System-Dashboard
- Auf dem System-Dashboard sieht der Aussendienst seine Umsatzentwicklung der letzten 12 Monate pro Monat mit Vorjahresvergleich über all seine Kunden
- Auf dem Kunden-Dashboard sieht der Aussendienst seine Umsatzentwicklung der letzten 12 Monate pro Monat mit Vorjahresvergleich für den spezifischen Kunden
- Monate ohne Umsatz sollen erscheinen ohne Umsatzbalken
Verworfen in Phase 1
- Ein Filter auf der Statistik, mit welchem man zum Beispiel nach Artikeltyp selektionieren kann
- Ein Auswahlmöglichen, mit welchem man andere Daten anstelle des Umsatzes anzeigen kann (z.B. Menge, Liter, Deckungsbeitrag)
SELECT DISTINCT
View_field | Entity.attribute | type | Description | DE | FR | IT | EN |
---|
AddressId | Bewegung.Bew_AdresseID | foreign key | ID der Adresse |
|
|
|
|
Delivery_month |
MONTH( Bewegung.Bew_Datum )
|
| Monat vom Lieferdatum | Monat | Mois | Mese | Month |
Delivery_year |
YEAR( Bewegung.Bew_Datum )
|
| Jahr vom Lieferdatum | Jahr | Année | Anno | Year |
Quantity |
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,3)) THEN (IsNull(Bewegung.Bew_Menge,0)) ELSE 0 ENDIF)
|
| Summe der Mengen | Menge | Quantité | Quantità | Quantity |
Selling_amount |
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,2)) THEN (IsNull(Bewegung.Bew_NettoErloes,Bewegung.Bew_Menge * Bewegung.Bew_Preis)) ELSE 0 ENDIF)
|
| Summe des Nettoerlöses | Umsatz | Chiffre d'affaires | Fatturato | Turnover |
Filter
| DB | View | Value |
---|
where | Bewegung.Bew_Vorgang | Process | -2 |
and | Bewegung.Bew_AdresseID | AddressId | is not null |
and | Bewegung.Bew_GegenBewegungId | - | is null |
and | Bewegung.Bew_Datum |
| >= CURRENT DATE - 730 |
Group by Klausel
AddressId |
DeliveryMonth |
DeliveryYear |
Order by Klausel
Topsellers
- Auf dem System-Dashboard sieht der Aussendiest die 10 Topseller aller seiner Kunden.
- Auf dem Kunden-Dashboard sieht der Aussendienst die 5 Topseller des entsprechenden Kunden
Mockup Topsellers

Field Mapping Topsellers
SELECT DISTINCT
View_field | Entity.attribute | type | Description | DE | FR | IT | EN |
---|
ArticleId | Bewegung.Bew_ArtikelID | foreign key | ID des Artikels |
|
|
|
|
AddressId | Bewegung.Bew_AdresseID | foreign key | ID der Adresse |
|
|
|
|
Quantity |
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,3)) THEN (IsNull(Bewegung.Bew_Menge,0)) ELSE 0 ENDIF)
|
| Summe der Mengen | Menge | Quantité | Quantità | Quantity |
Selling_amount |
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,2)) THEN (IsNull(Bewegung.Bew_NettoErloes,Bewegung.Bew_Menge * Bewegung.Bew_Preis)) ELSE 0 ENDIF)
|
| Summe des Nettoerlöses | Umsatz | Chiffre d'affaires | Fatturato | Turnover |
Filter
| DB | View | Value |
---|
where | Bewegung.Bew_Vorgang | Process | -2 |
and | Bewegung.Bew_AdresseID | AddressId | is not null |
and | Bewegung.Bew_GegenBewegungId | - | is null |
and | Bewegung.Bew_Datum |
| >= CURRENT DATE - 365 |
Group by Klausel
Order by Klausel
Bezüge
Mockup Bezüge

Field Mapping Sortiment
View_field | Entity.attribute | type | Description | DE | FR | IT | EN |
---|
ArticleId | Bewegung.Bew_ArtikelID | foreign key | ID des Artikels |
|
|
|
|
AddressId | Bewegung.Bew_AdresseID | foreign key | ID der Adresse |
|
|
|
|
Quantity_unit_30 |
SELECT SUM ( Bewegung.Bew_Menge )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
| numeric | Menge Stück/Flasche | Menge Abfüllung | Quantité Conditionnement | Quantità Imbottigliamento | Quantity Filling |
Quantity_unit_90 |
SELECT SUM ( Bewegung.Bew_Menge )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Quantity_unit_180 |
SELECT SUM ( Bewegung.Bew_Menge )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Quantity_unit_365 |
SELECT SUM ( Bewegung.Bew_Menge )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Quantity_unit_730 |
SELECT SUM ( Bewegung.Bew_Menge )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 730 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Selling_amount_30 |
SELECT SUM ( Bewegung.Bew_Nettoerloes )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
| numeric | Gesamtbetrag Verkauf | Umsatz | Chiffre d'affaires | Fatturato | Turnover |
Selling_amount_90 |
SELECT SUM ( Bewegung.Bew_Nettoerloes )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Selling_amount_180 |
SELECT SUM ( Bewegung.Bew_Nettoerloes )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Selling_amount_365 |
SELECT SUM ( Bewegung.Bew_Nettoerloes )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Selling_amount_730 |
SELECT SUM ( Bewegung.Bew_Nettoerloes )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 730 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Purchase_value_30 |
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
| numeric | Einkaufswert zu - Valuation_price_at_sale
- default Purchase_price
- default Valuation_price_current
- default 0
| Einkaufswert | Valeur d'achat | Valore di acquisto | Purchase value |
Purchase_value_90 |
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Purchase_value_180 |
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Purchase_value_365 |
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Purchase_value_720 |
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis )
FROM VinX.Bewegung
WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 720 )
AND Bewegung.Bew_ArtikelID = ArticleId
AND Bewegung.Bew_AdresseID = AddressId
AND Bewegung.Bew_Vorgang = (0-2)
AND Bewegung.Bew_Anrechenbar IN (0,2,3)
AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
|
|
|
|
|
|
|
Profit_margin |
Selling_amount - Purchase_value
| numeric | Deckungsbeitrag / Marge des Verkaufs in CHF | DB in CHF | Marge en CHF | Margine in CHF | Margin in CHF |
Profit_margin_percentage |
(if (Selling_amount <> 0) then (Profit_margin / Selling_amount ) else 0 endif)
| numeric | Deckungsbeitrag / Marge des Verkaufs in Prozent % | DB in % | Marge en % | Margin in % | Margin in % |
Filter
| DB | View | Value |
---|
where | Bewegung.Bew_Vorgang | Process | -2 |
and | Bewegung.Bew_AdresseID | AddressId | is not null |
and | Bewegung.Bew_GegenBewegungId | - | is null |
and | Bewegung.Bew_Datum |
| CURRENT DATE - 730 |
Anhang
Modellerweiterung ViewVinX_mfstatitics mit Definition für View vf_statistics
