Skocz do zawartości


Close Open
Close Open
Zdjęcie

zestawienie sql wartość liczbowa w tabeli


  • Please log in to reply
24 replies to this topic

#21 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 16 czerwiec 2010 - 17:05

chodzi o to:

CASE
WHEN uz_ID IN (17,1,22,31) THEN 1
WHEN uz_ID IN (28,29,1,22,31) THEN 2
END as zespół,
Jak to podłączyć do zapytania?
w którym miejscu?

#22 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 16 czerwiec 2010 - 19:21

Nie

Chodzi o :
1. utworzenie tabeli (CREATE TABLE prv_mojezespoly itd itd.... lub przy pomocy np SSMSE)
2. wypełnienie tabeli danymi (za pomocą INSERT INTO ... lub np SSMSE)
3. podłączenie za pomocą JOIN


*SSMSE - http://en.wikipedia....nagement_Studio


Oczywiście każdy dodany później użytkownik musi być dodany do naszej tabeli
Sławek

#23 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 16 czerwiec 2010 - 20:10

A istnieje jakaś inna metoda niż tworzenie własnej tabeli z poziomu serwera bazy danych?
Myślałem, że da się to zrobić na podobnej zasadzie co znalazłem na forum:
oOkres=CASE ({LI:tygodniowa#1#miesięczna#2#kwartalna#3#roczna#4#:Analiza :1:tygodniowa})
WHEN 1 THEN dbo.fnNazwaOkresu('wk', dok_DataWyst)
WHEN 2 THEN dbo.fnNazwaOkresu('mm', dok_DataWyst)
WHEN 3 THEN CAST(DATEPART(q, dok_DataWyst) as varchar)
WHEN 4 THEN CAST(DATEPART(yyyy, dok_DataWyst) as varchar)
END,

#24 birds22

birds22

    Entuzjasta

  • Forumowicze
  • PipPipPipPipPipPipPip
  • 1332 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Zduńska Wola

Napisany 17 czerwiec 2010 - 08:28

Nie mam jakoś pomysłu jak można byłoby to zrobić za pomocą kontrolek bez użycia zewnętrznej tabeli.

Jeżeli personelu nie jest dużo to można by się chyba pokusić o zrobienie "picowanej" tabeli
Spójrz co robi poniższe:

select u.uz_identyfikator, u.uz_Nazwisko, u.uz_imie,r.id_zespolu from pd_Uzytkownik u left join
(select id_pracownika=1, id_zespolu=1 union all Select 2,1 union all select 3,2) r on u.uz_id=r.id_pracownika

i kombinuj
Sławek

#25 loginmarcin

loginmarcin

    Kandydat

  • Forumowicze
  • PipPip
  • 41 Postów:
  • Płeć:Mężczyzna
  • Lokalizacja:Katowice, Polska

Napisany 13 lipiec 2010 - 15:36

Proszę o korektę zestawienia problem polega na tym ,że jeżeli użytkownik wystawiał dokument w kwartale na różnych magazy7nach to występuje dwa razy
jako dwie odpowiedzi z zapytania gdzie ma podane marże dla magazynu, chciałbym żeby te wartości były sumą i do tego wyliczona marża, wiem że wynika to z group by mag_id,ale nie wiem jak to zastąpić:
n.miesiąc as okres,
n.wystawił,
cast (n.x as money) as [obrót planowany],
cast (n.o as money) AS [marża planowana],
n.netto as [obrót wykonany],
n.z as [marża wykonana],
- n.x + n.netto as [obrót różnica],
(n.z) - (n.o) [marża różnica],
n.y/n.z*100 AS [obrót według marży],
n.netto/(n.y/n.z*100)*100 as[ % realizacji obrotu według marży],
n.netto -(n.y/n.z*100) AS [Obrót marża różnica]
FROM (SELECT
SUM(CASE WHEN dok_typ IN ( 2, 6 ) THEN [dok_WartTwNetto] + [dok_WartUsNetto] END) AS netto,

SUM(CASE WHEN dok_typ IN ( 2, 6 ) THEN dok_wartmag END) AS koszt,

(CASE
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 1 and uz_ID IN (17,24,28) THEN CAST (1 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 1 and uz_ID IN (11,29,32) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (28,36) THEN CAST (1 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (17) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (11,29,32) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (28,36) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (17) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (11,29,32) THEN CAST (3 AS MONEY)
END) as x,

(CASE
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 1 and uz_ID IN (17,24,28) THEN CAST (2 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 1 and uz_ID IN (11,29,32) THEN CAST (4 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (28,36) THEN CAST (3 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (17) THEN CAST (4 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 2 and uz_ID IN (11,29,32) THEN CAST (5 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (28,36) THEN CAST (3 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (17) THEN CAST (4 AS MONEY)
WHEN CAST(DATEPART(q,d1. dok_DataWyst) as varchar) = 3 and uz_ID IN (11,29,32) THEN CAST (5 AS MONEY)

END) as y,
(CASE
WHEN CAST(DATEPART(q, dok_DataWyst) as varchar) IN (1,2,3,4) and uz_ID IN (17,24,28,11,29,32,36) THEN CAST (19.3 AS MONEY)
END ) as o,
CAST(DATEPART(q, dok_DataWyst) as varchar) as miesiąc,

(SELECT
( n2.netto - n2.koszt ) / n2.netto * 100 AS marza
FROM (SELECT
SUM(CASE WHEN dok_typ IN ( 2, 6 ) THEN [dok_WartTwNetto] + [dok_WartUsNetto] END) AS netto,
SUM(CASE WHEN dok_typ IN ( 2, 6 ) THEN dok_wartmag ELSE dok_wartusnetto END) AS koszt
FROM dok__dokument d2 INNER JOIN sl_Magazyn ON d2.dok_MagId = sl_Magazyn.mag_Id
WHERE ( d2.dok_typ IN ( 1, 2,3 )
OR ( d2.dok_typ = 6 AND d2.dok_podtyp <> 1 ) )
AND (d2. dok_MagId =d1.dok_MagId)
AND year(dok_datawyst) = 2010
AND CAST(DATEPART(q, d2.dok_DataWyst) as varchar)=CAST(DATEPART(q,d1. dok_DataWyst) as varchar)
) AS n2) as z,
uz_Nazwisko as wystawił

FROM dok__dokument d1
INNER JOIN sl_Magazyn ON d1.dok_MagId = sl_Magazyn.mag_Id
INNER JOIN pd_Uzytkownik ON d1.dok_PersonelId = pd_Uzytkownik.uz_Id
WHERE ( d1.dok_typ IN (2 ) OR ( d1.dok_typ = 6 AND d1.dok_podtyp <> 1 ) )
AND dok_magid IN (11,9,10,12,13,8,60,59,61)
AND ({LI:miesieczna#1#kwartalnie#2#miesiące zamknięte#3#narastająco#4:Analiza})=2
AND year(dok_datawyst) = 2010
AND (dok_PersonelId IN ({CHL_DB: SELECT uz_Id, uz_Nazwisko + ' ' + uz_Imie AS NAZWA FROM pd_Uzytkownik where uz_status = 1 AND uz_Id IN(17,28,29,24,36,11,32) ORDER BY NAZWA:Handlowiec:}))
group by CAST(DATEPART(q, d1.dok_DataWyst) as varchar ),uz_Nazwisko,uz_ID,d1.dok_magid) AS n




0 Użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników