Autor Wątek: Sztuczny parametr w zestawieniu sql  (Przeczytany 190 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline loginmarcin

  • Nowy użytkownik
  • *
  • Wiadomości: 8
  • Reputacja +0/-0
    • Zobacz profil
Sztuczny parametr w zestawieniu sql
« dnia: Luty 09, 2012, 21:02:56 »
Witam,

Proszę o rozwiązanie problemu mam utworzone zestawienie z planami obrotowych z podziałem na miesiące , wynik pojawia mi się w momencie kiedy jest wystawiony jakiś dokument sprzedaży czy można to jakoś obejść ,żeby wyświetlały się dane zgodnie z miesiącami wiem ,że problem jest w tym fragmencie: d1.dok_datawyst, ale nie wiem jak to rozwiązać:  fragment zestawienia:
(CASE
WHEN month(d1.dok_datawyst) IN (1)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (2)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (3)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (4)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (5)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (6)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (7)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (8)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (9)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (10)        THEN CAST ( AS MONEY)
WHEN month(d1.dok_datawyst) IN (11)        THEN CAST (0 AS MONEY)
WHEN month(d1.dok_datawyst) IN (12)        THEN CAST (0 AS MONEY)
 END) as x,

Forum Użytkownikow Subiekt GT

Sztuczny parametr w zestawieniu sql
« dnia: Luty 09, 2012, 21:02:56 »

Offline birds22

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 2983
  • Reputacja +622/-8
    • Zobacz profil
  • Wersja programu: 1.28 SP2 HF1
Odp: Sztuczny parametr w zestawieniu sql
« Odpowiedź #1 dnia: Luty 09, 2012, 21:37:21 »
Ni diabła nie rozumiem o co chodzi.
Sławek

Pomogłem? - kliknij "pomógł" pod moim awatarem (... zbieram punkty na rozgrzeszenie u św. Piotra :) )

Offline dkozlowski

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 679
  • Reputacja +73/-1
    • Zobacz profil
  • Wersja programu: Najnowsza
Odp: Sztuczny parametr w zestawieniu sql
« Odpowiedź #2 dnia: Luty 09, 2012, 21:54:14 »
Przeczytałem chyba ze 3 czy 4 razy, chyba załapałem i dopiero zobaczyłem Twój wpis @birds22 :) Chyba chodzi o wyświetlenie wartości w rozbiciu na poszczególne miesiące w kolejnych kolumnach. Czyli:

CASE WHEN month(d1.dok_datawyst) IN (1)    THEN  d1.dok_WartNetto else  CAST (0 AS MONEY) end 'Styczeń',
CASE WHEN month(d1.dok_datawyst) IN (2)    THEN  d1.dok_WartNetto else  CAST (0 AS MONEY) end 'Luty',
...
CASE WHEN month(d1.dok_datawyst) IN (12)    THEN  d1.dok_WartNetto else  CAST (0 AS MONEY) end 'Grudzień'

?
Zanim zapytasz wciśnij "F1", to nie boli a często pomaga

Offline loginmarcin

  • Nowy użytkownik
  • *
  • Wiadomości: 8
  • Reputacja +0/-0
    • Zobacz profil
Odp: Sztuczny parametr w zestawieniu sql
« Odpowiedź #3 dnia: Luty 09, 2012, 23:37:25 »
Na miesiące rozbiłem, problem polega na tym , że month(d1.dok_datawyst) IN (3)    THEN  d1.dok_WartNetto else  CAST (tu wpisuję narzut planu obrotowego AS MONEY) , ale wyświetli mi się ta wartość w momencie kiedy będę miał jakikolwiek dokument wystawiony w marcu, jeżeli takiego nie będzie to ta wartość się nie pokaże.A zestawienie wygląda tak wartości narzutów są przykładowe:
SELECT
n.miesiąc as okres,
cast (n.x as money) as [obrót planowany],
cast (n.o as money) AS [marża planowana],
cast (n.y as money) as  [zysk planowany],
n.netto as [obrót wykonany],
( n.z ) / n.netto * 100 AS [marża wykonana],
n.z as [zysk wykonany],
- n.x + n.netto as [obrót różnica],
(( n.z ) / n.netto * 100) - ( n.o)   AS [marża różnica],
n.z - n.y as [zysk różnica],
(case when (( n.z ) / n.netto * 100)>0 then n.y/(( n.z ) / n.netto * 100)*100
         when (( n.z ) / n.netto * 100)<0 then  -(n.z - n.y)/n.o*100 end)   AS [obrót według marży],
(case when (( n.z ) / n.netto * 100)>0 then n.netto/ (n.y/(( n.z ) / n.netto * 100)*100)*100
                  when (( n.z ) / n.netto * 100)<0 then (n.z/n.y)*100 end) as [ % realizacji obrotu według marży],
(case when (( n.z ) / n.netto * 100)>0 then  n.netto - (n.y/(( n.z ) / n.netto * 100)*100)
          when (( n.z ) / n.netto * 100)<0 then (n.z - n.y)/n.o*100 end)  AS [Obrót marża różnica]
FROM (SELECT
 SUM(CASE WHEN dok_typ IN ( 2, 6,4 )  THEN [dok_WartTwNetto] + [dok_WartUsNetto] END) AS netto,
 SUM(CASE WHEN dok_typ IN ( 2, 6,4 )  THEN dok_wartmag ELSE dok_wartusnetto END) AS koszt,
 SUM(CASE WHEN dok_typ IN ( 2, 6,4 )  THEN [dok_WartTwNetto] + [dok_WartUsNetto]  END) -
 SUM(CASE WHEN dok_typ IN ( 2, 6,4 )  THEN dok_wartmag  END) -
 SUM(CASE WHEN dok_typ IN ( 1,3 )  THEN dok_wartusnetto  END) AS z,
(CASE
WHEN month(d1.dok_datawyst) IN (1)        THEN CAST (25 AS MONEY)
WHEN month(d1.dok_datawyst) IN (2)        THEN CAST (20 AS MONEY)
WHEN month(d1.dok_datawyst) IN (3)        THEN CAST (35 AS MONEY)
WHEN month(d1.dok_datawyst) IN (4)        THEN CAST (40 AS MONEY)
WHEN month(d1.dok_datawyst) IN (5)        THEN CAST (40 AS MONEY)
WHEN month(d1.dok_datawyst) IN (6)        THEN CAST (30 AS MONEY)
WHEN month(d1.dok_datawyst) IN (7)        THEN CAST (40 AS MONEY)
WHEN month(d1.dok_datawyst) IN (8)        THEN CAST (30 AS MONEY)
WHEN month(d1.dok_datawyst) IN (9)        THEN CAST (40 AS MONEY)
WHEN month(d1.dok_datawyst) IN (10)        THEN CAST (40 AS MONEY)
WHEN month(d1.dok_datawyst) IN (11)        THEN CAST (60 AS MONEY)
WHEN month(d1.dok_datawyst) IN (12)        THEN CAST (80 AS MONEY)
 END) as x,
(CASE
WHEN month(d1.dok_datawyst) IN (1)        THEN CAST (  3 AS MONEY)
WHEN month(d1.dok_datawyst) IN (2)        THEN CAST (  2 AS MONEY)
WHEN month(d1.dok_datawyst) IN (3)        THEN CAST (  4 AS MONEY)
WHEN month(d1.dok_datawyst) IN (4)        THEN CAST (  5 AS MONEY)
WHEN month(d1.dok_datawyst) IN (5)        THEN CAST (  5 AS MONEY)
WHEN month(d1.dok_datawyst) IN (6)        THEN CAST (  4 AS MONEY)
WHEN month(d1.dok_datawyst) IN (7)        THEN CAST (  5 AS MONEY)
WHEN month(d1.dok_datawyst) IN (8)        THEN CAST (  4 AS MONEY)
WHEN month(d1.dok_datawyst) IN (9)        THEN CAST (  5 AS MONEY)
WHEN month(d1.dok_datawyst) IN (10)        THEN CAST ( 5 AS MONEY)
WHEN month(d1.dok_datawyst) IN (11)        THEN CAST ( 8 AS MONEY)
WHEN month(d1.dok_datawyst) IN (12)        THEN CAST (10 AS MONEY)
 END) as y,
(CASE WHEN month(d1.dok_datawyst) IN (1,2,3,4,5,6,7,8,9,10,11,12) THEN CAST (1 AS MONEY) END ) as o,
dbo.fnNazwaOkresu('mm',d1.dok_DataWyst) as miesiąc
FROM dok__dokument d1
WHERE ( d1.dok_typ IN ( 1, 2,3,4 )
OR ( d1.dok_typ = 6 AND d1.dok_podtyp <> 1 ) ) AND d1.dok_Status !=2
AND (d1.dok_MagId IN (10,59,12))
AND d1.dok_MagId NOT IN (SELECT pf_Idobiektu FROM sl_MagazynProfil WHERE pf_IdUzytkownika = {ID_UZYTKOWNIKA})
AND ({LI:miesieczny#1#kwartalny#2#narastający#3:Wybór okresu:3:narastający})=1
AND ({LI:sprzedaż#1#sprzedaż + zamówienia#2#zamówienia#3:Wybór wartości:2:sprzedaż+zamówienia})=1
AND ({LI:zespół VII,II,III#1#zespół VI,IX,IV#2#zespół V#3#zespół I#4#Firma#5#Serwis#6:Wybór zespołu})=1
AND (month(d1.dok_DataWyst) IN
 ({CHL:styczeń#1#luty#2#marzec#3#kwiecień#4#maj#5#czerwiec#6#lipiec#7#sierpień#8#wrzesień#9#październik#10#listopad#11#grudzień#12#:miesiąc:1,2,3,4,5,6,7,8,9,10,11,12:wszystkie}))
AND year(d1.dok_datawyst) = 2012 group by dbo.fnNazwaOkresu('mm',d1.dok_DataWyst), month(d1.dok_datawyst)) AS n