SQL - Stany magazynowe z wybranego miesiąca
Moderator: mikey
SQL - Stany magazynowe z wybranego miesiąca
Muszę przygotować zapytanie stany magazynowe na koniec miesiąca wybranego miesiąca. Zapytanie ma zwracać Numer towaru, kod towaru, producenta, no i ilość na koniec wybranego miesiąca. Problem polega na tym, że nie wiem z której tabeli dokładnie pobrać te dane. Przejrzałem TwrStany, TwrSatnybufor, TwrZasoby.
-
- Posty: 182
- Rejestracja: 20 mar 2012, 09:04
- Rola: Konsultant CDN XL
- Wersja: 2016
- Lokalizacja: Wrocław
Re: SQL - Stany magazynowe z wybranego miesiąca
Stan magazynu historycznie nie jest przechowywany w żadnej tabeli.
Jest liczony jako suma przychodów i rozchodów danego indeksu za okres.
Przejrzyj sobie procedurę CDN.StanMagazynuNaDzien.
Ewentualnie wyjdź od wydruku stan magazynu na dzień (może wystarczy).
Jest liczony jako suma przychodów i rozchodów danego indeksu za okres.
Przejrzyj sobie procedurę CDN.StanMagazynuNaDzien.
Ewentualnie wyjdź od wydruku stan magazynu na dzień (może wystarczy).
Re: SQL - Stany magazynowe z wybranego miesiąca
Procedura jest, ale jak ją przerobić, żeby wrzuciła stany do tabeli?
Re: SQL - Stany magazynowe z wybranego miesiąca
przecież masz, jak mówił przedmówca, w postaci procedury [StanMagazynuNaDzien]
gdybyś zajrzał do tego skryptu zobaczyłbyś, że jest tam parametr @Data.
gdybyś zajrzał do tego skryptu zobaczyłbyś, że jest tam parametr @Data.
?? wynik chcesz pakować do jakiejś swojej tabeli?Procedura jest, ale jak ją przerobić, żeby wrzuciła stany do tabeli?
Re: SQL - Stany magazynowe z wybranego miesiąca
Zmodyfikowałem procedurę usuwając parametry @CDN_MagSesja, @CDN_MagWatek. Wywołana procedura zwraca mi błędne stany, sporo za duże. Może, ktoś bardziej biegły coś poradzi. Kod poniżej
Kod: Zaznacz cały
USE [Prezentacyjna10_1]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [CDN].[TS0_StanMagazynuNaDzien] (@Data int, @CDN_Filtr varchar(2048)='1=1' )
AS
DECLARE @MAGTyp SMALLINT
SET NOCOUNT ON
SET @MAGTyp = 208
CREATE TABLE #TmpTwrKarty
(
GIDNumer int
PRIMARY KEY(GIDNumer)
)
IF IsNull(@CDN_Filtr,'')=''
EXEC (N'Insert Into #TmpTwrKarty Select TwrKarty.Twr_GIDNumer FROM CDN.TwrKarty TwrKarty WHERE TwrKarty.Twr_Typ in (1,2)');
Else
EXEC (N'Insert Into #TmpTwrKarty Select TwrKarty.Twr_GIDNumer FROM CDN.TwrKarty TwrKarty WHERE TwrKarty.Twr_Typ in (1,2) AND ' + @CDN_Filtr);
SET NOCOUNT OFF
SELECT
IsNull(DokSprzedaz.Ilosc,0) As IloscDoSprzedazy,
IsNull(DokMagazyn.Ilosc,0) As W_Magazynie,
IsNull(DokSprzedaz.Wartosc,0) As Wartosc,
COALESCE(DokSprzedaz.Twr_Kod,DokMagazyn.Twr_Kod) As KodTowaru,
COALESCE(DokSprzedaz.Twr_Nazwa,DokMagazyn.Twr_Nazwa) As NazwaTowaru,
COALESCE(DokSprzedaz.Twr_Jm,DokMagazyn.Twr_Jm) As JmTowaru
FROM
(
SELECT
Twr_Kod, Twr_Nazwa,
ISNULL(SUM(CDN.TrSIlosc(TrS_Ilosc,TrN_GIDTyp,TrN_GIDNumer,TrS_GIDLp,TrS_SubGIDLp,TrS_ZwrTyp,TrN_Stan)),0) AS Ilosc,
ISNULL(SUM(CDN.TrSKsiegowa(TrS_KosztKsiegowy,TrS_Ilosc,TrN_GIDTyp,TrN_GIDNumer,TrS_GIDLp,TrS_SubGIDLp,TrS_ZwrTyp,TrN_Stan,TrN_ZmodyfikowanoZasob)),0) AS Wartosc,
max(Twr_Jm) as Twr_Jm
FROM
#TmpTwrKarty
JOIN CDN.TwrKarty ON Twr_GIDNumer=GIDNumer
JOIN CDN.TraElem ON Twr_GIDNumer=TrE_TwrNumer
JOIN CDN.TraSElem ON TrS_GIDNumer=TrE_GIDNumer
JOIN CDN.MagWybor ON TrS_MagNumer=MgW_MagNumer
JOIN CDN.TraNag ON TrN_GIDNumer=TrE_GIDNumer
WHERE Trn_DataMag<=@Data
GROUP BY Twr_Kod, Twr_Nazwa
)As DokSprzedaz
FULL JOIN
(
SELECT
Twr_Kod, Twr_Nazwa,
ISNULL(SUM(CDN.MasIlosc(MaS_Ilosc,MaN_TrNTyp,MaN_Stan)),0) AS Ilosc, max(Twr_Jm) as Twr_Jm
FROM
CDN.MagNag
JOIN CDN.MagsElem ON MaN_GIDNumer=MaS_GIDNumer
JOIN CDN.MagWybor ON MaS_MagNumer=MgW_MagNumer
JOIN CDN.TwrKarty ON Twr_GIDNumer=MaS_TwrNumer
JOIN #TmpTwrKarty ON Twr_GIDNumer=GIDNumer
WHERE Man_Data3<= @Data
GROUP BY Twr_Kod, Twr_Nazwa
) As DokMagazyn ON DokSprzedaz.Twr_Kod=DokMagazyn.Twr_Kod
WHERE IsNull(DokSprzedaz.Ilosc,0) <>0 OR IsNull(DokMagazyn.Ilosc,0) <> 0 OR IsNull(DokSprzedaz.Wartosc,0) <> 0
-
- Posty: 111
- Rejestracja: 15 sty 2010, 15:17
- Rola: Administrator CDN XL
- Lokalizacja: Ciechanów
- Kontakt:
Re: SQL - Stany magazynowe z wybranego miesiąca
Witam.
Ja @CDN_MagSesja i @CDN_MagWatek uzupełniam zawsze na podstawie zapytania:
i wtedy działa.
Ja @CDN_MagSesja i @CDN_MagWatek uzupełniam zawsze na podstawie zapytania:
Kod: Zaznacz cały
DECLARE @SesjaID INT
SET @SesjaID=(SELECT MAX(MgW_SesjaID) FROM CDN.MagWybor)
SELECT MgW_SesjaID, MgW_Watek
FROM CDN.MagWybor
WHERE MgW_SesjaID=@SesjaID AND MgW_MagNumer=--podaj GIDNumer magazynu
Przemysław Klimkowski
farbex.com.pl
farbex.com.pl