Created
February 22, 2022 11:49
-
-
Save MikeRzhevsky/e68c2c66df9a472331cd3de09a68e92f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {{ config( | |
| as_columnstore=false | |
| , post_hook=[" | |
| {{ create_nonclustered_index( ['Товар']) }} | |
| {{ create_nonclustered_index( ['СкладКуда']) }} | |
| {{ create_nonclustered_index( ['СкладОткуда']) }} | |
| "] | |
| ) | |
| }} | |
| {% set start_date = '20210101' %} | |
| with СкладКуда as ( | |
| select Регистратор, Склад as СклКуда, max(whn.Наименование) as КудаНаименование, Товар as Товар, sum(ОстатокТовара) as КолКуда, | |
| Период | |
| from {{ source('1c' , 'РегистрНакопления.ОстаткиТоваров') }} | |
| left join {{ source('1c' , 'Справочник.МестаХранения') }} whn on whn.Ссылка = Склад | |
| where ТипДвижения = 0 and Период > '{{start_date}}' | |
| group by Регистратор,Склад,Товар, Период | |
| ), | |
| СкладОткуда as ( | |
| select Регистратор, Склад as СклОткуда, max(whn.Наименование) as ОткудаНаименование, Товар as Товар, sum(ОстатокТовара) as КолОткуда, | |
| Период | |
| from {{ source('1c' , 'РегистрНакопления.ОстаткиТоваров') }} | |
| left join {{ source('1c' , 'Справочник.МестаХранения') }} whn on whn.Ссылка = Склад | |
| where ТипДвижения = 1 and Период > '{{start_date}}' | |
| group by Регистратор,Склад,Товар,Период | |
| ) | |
| select {{ BinaryToChar( 'куда.Товар' ) }} as Товар, куда.Товар as ТоварБин, куда.КудаНаименование as СкладКуда, откуда.ОткудаНаименование as СкладОткуда, | |
| куда.КолКуда as Количество, куда.Период | |
| from СкладКуда куда | |
| join СкладОткуда откуда on откуда.Регистратор = куда.Регистратор | |
| and откуда.Товар = куда.Товар and куда.КолКуда = откуда.КолОткуда | |
| union all -- Товар больше чем переместили | |
| select {{ BinaryToChar( 'куда.Товар' ) }} as Товар, куда.Товар as ТоварБин, куда.КудаНаименование as СкладКуда, null as СкладОткуда, | |
| iif(откуда.КолОткуда is not null, (куда.КолКуда-откуда.КолОткуда),куда.КолКуда) as Количество, | |
| куда.Период | |
| from СкладКуда куда | |
| left join СкладОткуда откуда on откуда.Регистратор = куда.Регистратор | |
| and откуда.Товар = куда.Товар and куда.КолКуда > откуда.КолОткуда | |
| union all -- в обратную сторону не переместили еще | |
| select {{ BinaryToChar( 'откуда.Товар' ) }} as Товар, откуда.Товар as ТоварБин, null as СкладКуда, откуда.ОткудаНаименование as СкладОткуда, | |
| iif(куда.КолКуда is not null, (откуда.КолОткуда - куда.КолКуда),откуда.КолОткуда) as Количество, | |
| откуда.Период | |
| from СкладОткуда откуда | |
| left join СкладКуда куда on куда.Регистратор = откуда.Регистратор | |
| and куда.Товар = откуда.Товар and откуда.КолОткуда > куда.КолКуда |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
declare @temptable table (Товар binary(16), СкладКуда nvarchar(64), СкладОткуда nvarchar(64), Количество int, Период Date);
with СкладКуда as (
select Регистратор, Склад as СклКуда,max(whn.Наименование) as КудаНаименование, Товар
from CifraTest.[1c_a].[РегистрНакопления.ОстаткиТоваров]
left join "CifraTest"."1c_a"."Справочник.МестаХранения" whn on whn.Ссылка = Склад
where ТипДвижения = 0 and Период between '20210101' and '20210105'
group by Регистратор, Товар, Склад
),
СкладОткуда as (
select Регистратор, Склад as СклОткуда, max(whn.Наименование) as ОткудаНаименование, Товар as Товар
from CifraTest.[1c_a].[РегистрНакопления.ОстаткиТоваров]
left join "CifraTest"."1c_a"."Справочник.МестаХранения" whn on whn.Ссылка = Склад
where ТипДвижения = 1 and Период between '20210101' and '20210105'
group by Регистратор,Склад,Товар,Период
)
--insert into @temptable
select откуда.Товар,СкладКуда.КудаНаименование as СкладКуда, whn.Наименование as СкладОткуда,
откуда.ОстатокТовара as Количество,откуда.Период
from CifraTest.[1c_a].[РегистрНакопления.ОстаткиТоваров] as откуда
LEFT OUTER JOIN СкладКуда on СкладКуда.Регистратор = откуда.Регистратор and СкладКуда.Товар = откуда.Товар and СкладКуда.СклКуда <> откуда.Склад
LEFT JOIN "CifraTest"."1c_a"."Справочник.МестаХранения" whn on whn.Ссылка = откуда.Склад
where откуда.ТипДвижения = 1 and откуда.Период between '20210101' and '20210105'
/union all
select куда.Товар, whn.Наименование as СкладКуда,
СкладОткуда.ОткудаНаименование as СкладОткуда, куда.ОстатокТовара as Количество, куда.Период
from CifraTest.[1c_a].[РегистрНакопления.ОстаткиТоваров] as куда
LEFT OUTER JOIN СкладОткуда on СкладОткуда.Регистратор = куда.Регистратор and СкладОткуда.Товар = куда.Товар
LEFT JOIN "CifraTest"."1c_a"."Справочник.МестаХранения" whn on whn.Ссылка = куда.Склад
where куда.ТипДвижения = 0 and куда.Период between '20210101' and '20210115'/