|
запуск хранимой процедуры ms sql
#32341813
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Украина
Сообщения: 177
|
|
вот процедура
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235.
CREATE procedure dbo.карточка_складского_учета_4(@код_склад int, @код_тмц int, @Дата_начало smalldatetime, @Дата_конец smalldatetime, @фильтр bit )
as
declare @t table (КОД INT)
if @фильтр= 1
INSERT INTO @T
select код from dbo.Фильтр with(nolock) where таблица = 'vw_список_тмц' and username =user
else
INSERT INTO @T
(код) values (@код_тмц)
SELECT all
(case
when not ([Код_Спецификация_приходной_накладной] is null) then /*'Контрагент'*/
(SELECT dbo.Организация.Наименование FROM dbo.Спецификация_приходной_накладной so INNER JOIN
dbo.Организация with (nolock) ON so.код_организации = dbo.Организация.Код_Организации
where so.Код_Спецификация_приходной_накладной = СПО.Код_Спецификация_приходной_накладной)
when not ([Код_Спецификация_заказа_на_возврат_ТМЦ] is null) then 'Производство'
when not ([Код_Спецификация_накладной_на_внутреннее_перемещение] is null) then 'Внутрен'
when not ([Код_Спецификация_накладной_на_пересортицу] is null) then 'Пересорт'
when not (Код_Спецификация_накладной_на_излишек is null) then 'Излишек'
when not (Код_Спецификация_ордера_на_списание_из_производства is null) then 'Возврат сырья'
when not (Код_Спецификация_накладной_на_возврат_от_покупателя is null) then 'Воз/покупателя'
when not (Код_Спецификация_расходного_ордера_МБП is null) then
(select s.Фамилия from dbo.Спецификация_расходного_ордера_мбп as сро_мбп with (nolock)
left join dbo.Сотрудники s with (nolock) on s.[код сотрудника] = сро_мбп.код_сотрудника
where сро_мбп.Код_Спецификация_расходного_ордера_МБП = СПО.Код_Спецификация_расходного_ордера_МБП)
end)collate sql_latin1_General_CP1251_CI_AS as Тип ,
(case
when not ([Код_Спецификация_приходной_накладной] is null) then [Код_Спецификация_приходной_накладной]
when not ([Код_Спецификация_заказа_на_возврат_ТМЦ] is null) then [Код_Спецификация_заказа_на_возврат_ТМЦ]
when not ([Код_Спецификация_накладной_на_внутреннее_перемещение] is null) then [Код_Спецификация_накладной_на_внутреннее_перемещение]
when not ([Код_Спецификация_накладной_на_пересортицу] is null) then [Код_Спецификация_накладной_на_пересортицу]
when not (Код_Спецификация_накладной_на_излишек is null) then Код_Спецификация_накладной_на_излишек
when not (Код_Спецификация_ордера_на_списание_из_производства is null) then Код_Спецификация_ордера_на_списание_из_производства
when not (Код_Спецификация_накладной_на_возврат_от_покупателя is null) then Код_Спецификация_накладной_на_возврат_от_покупателя
when not (Код_Спецификация_расходного_ордера_МБП is null )then Код_Спецификация_расходного_ордера_МБП
end) as Код_документа,
(case
when not ([Код_Спецификация_приходной_накладной] is null) then (select ПН.Номер from Приходная_накладная ПН INNER JOIN
Спецификация_приходной_накладной СПН ON СПН.Код_приходная_накладная=ПН.Код_приходная_накладная
where СПН.Код_Спецификация_приходной_накладной=СПО.Код_Спецификация_приходной_накладной)
when not ([Код_Спецификация_заказа_на_возврат_ТМЦ] is null) then (select СПЗ.Номер from Спецификация_производственного_заказа СПЗ INNER JOIN
Спецификация_заказа_на_возврат_ТМЦ СЗВТ ON СЗВТ.Код_Спецификация_производственного_заказа=СПЗ.Код_Спецификация_производственного_заказа
where СЗВТ.Код_Спецификация_заказа_на_возврат_ТМЦ=СПО.Код_Спецификация_заказа_на_возврат_ТМЦ)
when not ([Код_Спецификация_накладной_на_внутреннее_перемещение] is null) then (select НВП.Номер from Накладная_на_внутреннее_перемещение НВП INNER JOIN
Спецификация_накладной_на_внутреннее_перемещение СНВП ON НВП.Код_накладная_на_внутреннее_перемещение=СНВП.Код_накладная_на_внутреннее_перемещение
where СНВП.Код_Спецификация_накладной_на_внутреннее_перемещение=СПО.Код_Спецификация_накладной_на_внутреннее_перемещение)
when not ([Код_Спецификация_накладной_на_пересортицу] is null) then (select НП.Номер from Накладная_на_пересортицу НП INNER JOIN
Спецификация_накладной_на_пересортицу СНП ON НП.Код_накладная_на_пересортицу=СНП.Код_накладная_на_пересортицу
where СНП.Код_Спецификация_накладной_на_пересортицу=СПО.Код_Спецификация_накладной_на_пересортицу)
when not (Код_Спецификация_накладной_на_излишек is null) then (select НИ.Номер from Накладная_на_излишек НИ INNER JOIN
Спецификация_накладной_на_излишек СНИ ON НИ.Код_накладная_на_излишек=СНИ.Код_накладная_на_излишек
where СНИ.Код_Спецификация_накладной_на_излишек=СПО.Код_Спецификация_накладной_на_излишек)
when not ([Код_Спецификация_ордера_на_списание_из_производства] is null) then (select ПО.Номер from Приходный_ордер ПО INNER JOIN
Спецификация_приходного_ордера СПОР ON СПОР.Код_приходный_ордер=ПО.Код_приходный_ордер
where СПОР.Код_Спецификация_ордера_на_списание_из_производства=СПО.Код_Спецификация_ордера_на_списание_из_производства)
when not (Код_Спецификация_накладной_на_возврат_от_покупателя is null) then (select НВ.Номер from Накладная_на_возврат_от_покупателя НВ INNER JOIN
Спецификация_накладной_на_возврат_от_покупателя СНВ ON НВ.Код_Накладная_на_возврат_от_покупателя=СНВ.Код_Накладная_на_возврат_от_покупателя
where СНВ.Код_Спецификация_накладной_на_возврат_от_покупателя=СПО.Код_Спецификация_накладной_на_возврат_от_покупателя)
when not ( Код_Спецификация_расходного_ордера_МБП is null )then
(select ас.номер from Спецификация_расходного_ордера_МБП сро_мбп join Акт_Списания_МБП ас on ас.Код_Акт_списания_МБП = сро_мбп.Код_Акт_списания_МБП
where сро_мбп.Код_Спецификация_расходного_ордера_МБП = СПО.Код_Спецификация_расходного_ордера_МБП)
end) as Номер_документа,
(case
when not ([Код_Спецификация_приходной_накладной] is null) then (select ПН.Код_Приходная_накладная from Приходная_накладная ПН INNER JOIN
Спецификация_приходной_накладной СПН ON СПН.Код_приходная_накладная=ПН.Код_приходная_накладная
where СПН.Код_Спецификация_приходной_накладной=СПО.Код_Спецификация_приходной_накладной)
when not ([Код_Спецификация_заказа_на_возврат_ТМЦ] is null) then (select СПЗ.Код_Производственный_заказ from Спецификация_производственного_заказа СПЗ INNER JOIN
Спецификация_заказа_на_возврат_ТМЦ СЗВТ ON СЗВТ.Код_Спецификация_производственного_заказа=СПЗ.Код_Спецификация_производственного_заказа
where СЗВТ.Код_Спецификация_заказа_на_возврат_ТМЦ=СПО.Код_Спецификация_заказа_на_возврат_ТМЦ)
when not ([Код_Спецификация_накладной_на_внутреннее_перемещение] is null) then (select НВП.Код_Накладная_на_внутреннее_перемещение from Накладная_на_внутреннее_перемещение НВП INNER JOIN
Спецификация_накладной_на_внутреннее_перемещение СНВП ON НВП.Код_накладная_на_внутреннее_перемещение=СНВП.Код_накладная_на_внутреннее_перемещение
where СНВП.Код_Спецификация_накладной_на_внутреннее_перемещение=СПО.Код_Спецификация_накладной_на_внутреннее_перемещение)
when not ([Код_Спецификация_накладной_на_пересортицу] is null) then (select НП.Код_Накладная_на_пересортицу from Накладная_на_пересортицу НП INNER JOIN
Спецификация_накладной_на_пересортицу СНП ON НП.Код_накладная_на_пересортицу=СНП.Код_накладная_на_пересортицу
where СНП.Код_Спецификация_накладной_на_пересортицу=СПО.Код_Спецификация_накладной_на_пересортицу)
when not (Код_Спецификация_накладной_на_излишек is null) then (select НИ.Код_Накладная_на_излишек from Накладная_на_излишек НИ INNER JOIN
Спецификация_накладной_на_излишек СНИ ON НИ.Код_накладная_на_излишек=СНИ.Код_накладная_на_излишек
where СНИ.Код_Спецификация_накладной_на_излишек=СПО.Код_Спецификация_накладной_на_излишек)
when not ([Код_Спецификация_ордера_на_списание_из_производства] is null) then (select ПО.Код_приходный_ордер from Приходный_ордер ПО INNER JOIN
Спецификация_приходного_ордера СПОР ON СПОР.Код_приходный_ордер=ПО.Код_приходный_ордер
where СПОР.Код_Спецификация_ордера_на_списание_из_производства=СПО.Код_Спецификация_ордера_на_списание_из_производства)
when not (Код_Спецификация_накладной_на_возврат_от_покупателя is null) then (select НВ.Код_Накладная_на_возврат_от_покупателя from Накладная_на_возврат_от_покупателя НВ INNER JOIN
Спецификация_накладной_на_возврат_от_покупателя СНВ ON НВ.Код_Накладная_на_возврат_от_покупателя=СНВ.Код_Накладная_на_возврат_от_покупателя
where СНВ.Код_Спецификация_накладной_на_возврат_от_покупателя=СПО.Код_Спецификация_накладной_на_возврат_от_покупателя)
when not ( Код_Спецификация_расходного_ордера_МБП is null )then
(select ас.Код_Акт_списания_МБП from Спецификация_расходного_ордера_МБП сро_мбп join Акт_Списания_МБП ас on ас.Код_Акт_списания_МБП = сро_мбп.Код_Акт_списания_МБП
where сро_мбп.Код_Спецификация_расходного_ордера_МБП = СПО.Код_Спецификация_расходного_ордера_МБП)
end)as Код_Номер_документа,
Дата_приходного_ордера,
Количество_план as Приход,
0 as Расход,
Код_приходный_ордер as Код_ордера,
Цена_в_НДЕ,
dbo.тмц.наименование_тмц,
Единица_измерения.Единица_измерения,
isnull(остаток.остаток, 0 )as остаток
FROM Спецификация_приходного_ордера СПО with (nolock)
inner join @T T on СПО.КОД_ТМЦ=T.КОД
left join dbo.ТМЦ with (nolock) on ТМЦ.код_тмц = СПО.код_тмц
left join Единица_измерения WITH (NOLOCK)ON ТМЦ.Код_Единицы_измерения = Единица_измерения.Код_Единицы_измерения
left join
(select q1.код_тмц, isnull (Q1.сумма_план, 0 ) - isnull(q2.сумма_факт, 0 )as Остаток
from (select SUM(СПО.Количество_план) as сумма_план,СПО.код_тмц
from Спецификация_приходного_ордера СПО with(nolock)
where (СПО.Дата_приходного_ордера < @Дата_начало) AND (СПО.Код_Склад = @код_склад)
group by СПО.код_тмц)q1
left join (select SUM(СРО.Количество_факт) as сумма_факт,СРО.код_тмц
from dbo.Спецификация_расходного_ордера СРО with(nolock)
where (СРО.Код_Склад = @код_склад) AND (СРО.Дата_расходного_ордера < @Дата_начало)
group by СРО.код_тмц )q2 on q1.код_тмц = q2.код_тмц
)as остаток
on остаток.код_тмц =СПО.код_тмц
WHERE
(Код_Склад = @Код_Склад) AND (Дата_приходного_ордера >= @Дата_начало) AND (Дата_приходного_ордера <= @Дата_конец)
union all
SELECT all
(case
when [Код_Спецификация_расходной_накладной] is not null then /*'Контрагент'*/
(SELECT dbo.Организация.Наименование FROM dbo.Спецификация_расходной_накладной so INNER JOIN
dbo.Организация with (nolock) ON so.код_организации = dbo.Организация.Код_Организации
where so.код_спецификации_расх_накладной= СРО.Код_Спецификация_расходной_накладной)
when [Код_Спецификация_накладной_на_внутреннее_перемещение] is not null then 'Внутрен'
when [Код_Спецификация_накладной_на_отпуск_в_производство] is not null then 'Производ'
when [Код_Спецификация_накладной_на_сверхнормативную_выдачу] is not null then 'Сверх.норм'
when [Код_Спецификация_акта_по_недостачи] is not null then 'Недостача'
when [Код_Спецификация_накладной_на_пересортицу] is not null then 'Пересорт'
when [Код_Спецификация_приходного_ордера_МБП] is not null then (select s.Фамилия from dbo.Спецификация_приходного_ордера_мбп as спо_мбп with (nolock)
left join dbo.Сотрудники s with (nolock) on s.[код сотрудника] = спо_мбп.код_сотрудника where спо_мбп.Код_Спецификация_приходного_ордера_МБП = СРО.Код_Спецификация_приходного_ордера_МБП)
end)collate sql_latin1_General_CP1251_CI_AS as Тип ,
(case
when [Код_Спецификация_расходной_накладной] is not null then [Код_Спецификация_расходной_накладной]
when [Код_Спецификация_накладной_на_внутреннее_перемещение] is not null then [Код_Спецификация_накладной_на_внутреннее_перемещение]
when [Код_Спецификация_накладной_на_отпуск_в_производство] is not null then [Код_Спецификация_накладной_на_отпуск_в_производство]
when [Код_Спецификация_накладной_на_сверхнормативную_выдачу] is not null then [Код_Спецификация_накладной_на_сверхнормативную_выдачу]
when [Код_Спецификация_акта_по_недостачи] is not null then [Код_Спецификация_акта_по_недостачи]
when [Код_Спецификация_накладной_на_пересортицу] is not null then [Код_Спецификация_накладной_на_пересортицу]
when [Код_Спецификация_приходного_ордера_МБП] is not null then [Код_Спецификация_приходного_ордера_МБП]
end) as Код_документа,
(case
when [Код_Спецификация_расходной_накладной] is not null then (select РН1.Номер_накладной from Расходная_накладная РН1 INNER JOIN
Спецификация_расходной_накладной СРН1 ON РН1.Код_расходная_накладная=СРН1.Код_расходная_накладная
where СРН1.Код_Спецификации_расх_накладной=СРО.Код_Спецификация_расходной_накладной)
when [Код_Спецификация_накладной_на_внутреннее_перемещение] is not null then (select НВПР.Номер from Накладная_на_внутреннее_перемещение НВПР INNER JOIN
Спецификация_накладной_на_внутреннее_перемещение СНВПР ON НВПР.Код_накладная_на_внутреннее_перемещение=СНВПР.Код_накладная_на_внутреннее_перемещение
where СНВПР.Код_Спецификация_накладной_на_внутреннее_перемещение=СРО.Код_Спецификация_накладной_на_внутреннее_перемещение)
when [Код_Спецификация_накладной_на_отпуск_в_производство] is not null then (select НОП.Номер from Накладная_на_отпуск_в_производство НОП INNER JOIN
Спецификация_накладной_на_отпуск_в_производство СНОП ON НОП.Код_накладная_на_отпуск_в_производство=СНОП.Код_накладная_на_отпуск_в_производство
where СНОП.Код_Спецификация_накладной_на_отпуск_в_производство=СРО.Код_Спецификация_накладной_на_отпуск_в_производство)
when [Код_Спецификация_накладной_на_сверхнормативную_выдачу] is not null then (select НСВ.Номер from Накладная_на_сверхнормативную_выдачу НСВ INNER JOIN
Спецификация_накладной_на_сверхнормативную_выдачу СНСВ ON НСВ.Код_накладная_на_сверхнормативную_выдачу=СНСВ.Код_накладная_на_сверхнормативную_выдачу
where СНСВ.Код_Спецификация_накладной_на_сверхнормативную_выдачу=СРО.Код_Спецификация_накладной_на_сверхнормативную_выдачу)
when [Код_Спецификация_накладной_на_пересортицу] is not null then (select НПР.Номер from Накладная_на_пересортицу НПР INNER JOIN
Спецификация_накладной_на_пересортицу СНПР ON НПР.Код_накладная_на_пересортицу=СНПР.Код_накладная_на_пересортицу
where СНПР.Код_Спецификация_накладной_на_пересортицу=СРО.Код_Спецификация_накладной_на_пересортицу)
when [Код_Спецификация_акта_по_недостачи] is not null then (select АН.Номер from Акт_по_недостачи АН INNER JOIN
Спецификация_акта_по_недостачи САН ON АН.Код_Акт_по_недостачи=САН.Код_Акт_по_недостачи
where САН.Код_Спецификация_акта_по_недостачи=СРО.Код_Спецификация_акта_по_недостачи)
when Код_Спецификация_приходного_ордера_МБП is not null then (select m.Номер from Спецификация_приходного_ордера_МБП спо_мбп
join карточка_МБП m on m.Код_Карточки_МБП = спо_мбп.Код_Карточки_МБП where спо_мбп.Код_Спецификация_приходного_ордера_МБП = СРО.Код_Спецификация_приходного_ордера_МБП)
end) as Номер_документа,
(case
when [Код_Спецификация_расходной_накладной] is not null then (select РН1.Код_Расходная_накладная from Расходная_накладная РН1 INNER JOIN
Спецификация_расходной_накладной СРН1 ON РН1.Код_расходная_накладная=СРН1.Код_расходная_накладная
where СРН1.Код_Спецификации_расх_накладной=СРО.Код_Спецификация_расходной_накладной)
when [Код_Спецификация_накладной_на_внутреннее_перемещение] is not null then (select НВПР.Код_Накладная_на_внутреннее_перемещение from Накладная_на_внутреннее_перемещение НВПР INNER JOIN
Спецификация_накладной_на_внутреннее_перемещение СНВПР ON НВПР.Код_накладная_на_внутреннее_перемещение=СНВПР.Код_накладная_на_внутреннее_перемещение
where СНВПР.Код_Спецификация_накладной_на_внутреннее_перемещение=СРО.Код_Спецификация_накладной_на_внутреннее_перемещение)
when [Код_Спецификация_накладной_на_отпуск_в_производство] is not null then (select НОП.Код_Накладная_на_отпуск_в_производство from Накладная_на_отпуск_в_производство НОП INNER JOIN
Спецификация_накладной_на_отпуск_в_производство СНОП ON НОП.Код_накладная_на_отпуск_в_производство=СНОП.Код_накладная_на_отпуск_в_производство
where СНОП.Код_Спецификация_накладной_на_отпуск_в_производство=СРО.Код_Спецификация_накладной_на_отпуск_в_производство)
when [Код_Спецификация_накладной_на_сверхнормативную_выдачу] is not null then (select НСВ.Код_Накладная_на_сверхнормативную_выдачу from Накладная_на_сверхнормативную_выдачу НСВ INNER JOIN
Спецификация_накладной_на_сверхнормативную_выдачу СНСВ ON НСВ.Код_накладная_на_сверхнормативную_выдачу=СНСВ.Код_накладная_на_сверхнормативную_выдачу
where СНСВ.Код_Спецификация_накладной_на_сверхнормативную_выдачу=СРО.Код_Спецификация_накладной_на_сверхнормативную_выдачу)
when [Код_Спецификация_накладной_на_пересортицу] is not null then (select НПР.Код_Накладная_на_пересортицу from Накладная_на_пересортицу НПР INNER JOIN
Спецификация_накладной_на_пересортицу СНПР ON НПР.Код_накладная_на_пересортицу=СНПР.Код_накладная_на_пересортицу
where СНПР.Код_Спецификация_накладной_на_пересортицу=СРО.Код_Спецификация_накладной_на_пересортицу)
when [Код_Спецификация_акта_по_недостачи] is not null then (select АН.Код_Акт_по_недостачи from Акт_по_недостачи АН INNER JOIN
Спецификация_акта_по_недостачи САН ON АН.Код_Акт_по_недостачи=САН.Код_Акт_по_недостачи
where САН.Код_Спецификация_акта_по_недостачи=СРО.Код_Спецификация_акта_по_недостачи)
when Код_Спецификация_приходного_ордера_МБП is not null then (select m.Код_Карточки_МБП from Спецификация_приходного_ордера_МБП спо_мбп
join карточка_МБП m on m.Код_Карточки_МБП = спо_мбп.Код_Карточки_МБП where спо_мбп.Код_Спецификация_приходного_ордера_МБП = СРО.Код_Спецификация_приходного_ордера_МБП)
end) as Код_Номер_документа,
Дата_расходного_ордера, 0 , Количество_факт as Ушло,Код_расходный_ордер as Код_ордера, Цена_в_НДЕ,
dbo.тмц.наименование_тмц,
Единица_измерения.Единица_измерения,
isnull(остаток.остаток, 0 )as остаток
FROM Спецификация_расходного_ордера СРО with (nolock)
inner JOIN @T T on СРО.КОД_ТМЦ=T.КОД
left join dbo.ТМЦ with (nolock) on ТМЦ.код_тмц = СРО.код_тмц
left join Единица_измерения WITH (NOLOCK) ON ТМЦ.Код_Единицы_измерения = Единица_измерения.Код_Единицы_измерения
left join(select q1.код_тмц, isnull (Q1.сумма_план, 0 ) - isnull(q2.сумма_факт, 0 )as Остаток
from (select SUM(СПО.Количество_план) as сумма_план,СПО.код_тмц
from Спецификация_приходного_ордера СПО
where (СПО.Дата_приходного_ордера < @Дата_начало) AND (СПО.Код_Склад = @код_склад)
group by СПО.код_тмц)q1
left join (select SUM(СРО.Количество_факт) as сумма_факт,СРО.код_тмц
from dbo.Спецификация_расходного_ордера СРО
where (СРО.Код_Склад = @код_склад) AND (СРО.Дата_расходного_ордера < @Дата_начало)
group by СРО.код_тмц )q2 on q1.код_тмц = q2.код_тмц
)as остаток
on остаток.код_тмц =СРО.код_тмц
WHERE
(Код_Склад = @Код_Склад) AND(Дата_расходного_ордера >= @Дата_начало) AND (Дата_расходного_ордера <= @Дата_конец)
order by Дата_приходного_ордера,Расход
|
|
|