Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Всем привет! Помогите пожалуйста решить такое задание На основе данных вывести таблицу остатков на счетах на конец текущего месяца и на конец каждого из пяти предыдущих. В ko представлены 4 контрагента 'Север', 'Запад', 'Восток', 'Юг' id - id контрагента name - название контрагента В ac представлены движения средств на счетах: ko - id контрагента из представления ko oper_date - дата операции amount - сумма direction - направление движения средств (1 - поступление, 0 - снятие) Дописать запрос, для получения результата [img=Безымянный.png] with ko as ( select 1 id, 'Север' name union all select 2 id, 'Запад' name union all select 3 id, 'Восток' name union all select 4 id, 'Юг' name ), ac as ( select 1 ko, convert(datetime, '01.01.2017', 104) oper_date, 100 amount, 1 direction union all select 1 ko, convert(datetime, '11.01.2017', 104) oper_date, 30 amount, 0 direction union all select 1 ko, convert(datetime, '01.02.2017', 104) oper_date, 230 amount, 1 direction union all select 1 ko, convert(datetime, '11.02.2017', 104) oper_date, 40 amount, 0 direction union all select 1 ko, convert(datetime, '01.03.2017', 104) oper_date, 90 amount, 1 direction union all select 1 ko, convert(datetime, '11.03.2017', 104) oper_date, 180 amount, 0 direction union all select 1 ko, convert(datetime, '01.04.2017', 104) oper_date, 400 amount, 1 direction union all select 1 ko, convert(datetime, '11.04.2017', 104) oper_date, 100 amount, 0 direction union all select 1 ko, convert(datetime, '01.05.2017', 104) oper_date, 120 amount, 1 direction union all select 1 ko, convert(datetime, '11.05.2017', 104) oper_date, 310 amount, 0 direction union all select 1 ko, convert(datetime, '01.06.2017', 104) oper_date, 100 amount, 1 direction union all select 1 ko, convert(datetime, '11.06.2017', 104) oper_date, 40 amount, 0 direction union all select 1 ko, convert(datetime, '01.07.2017', 104) oper_date, 90 amount, 1 direction union all select 1 ko, convert(datetime, '11.07.2017', 104) oper_date, 180 amount, 0 direction union all select 1 ko, convert(datetime, '01.08.2017', 104) oper_date, 400 amount, 1 direction union all select 1 ko, convert(datetime, '11.08.2017', 104) oper_date, 100 amount, 0 direction union all select 1 ko, convert(datetime, '01.09.2017', 104) oper_date, 120 amount, 1 direction union all select 2 ko, convert(datetime, '01.02.2017', 104) oper_date, 725 amount, 1 direction union all select 2 ko, convert(datetime, '11.02.2017', 104) oper_date, 40 amount, 0 direction union all select 2 ko, convert(datetime, '01.03.2017', 104) oper_date, 90 amount, 1 direction union all select 2 ko, convert(datetime, '11.03.2017', 104) oper_date, 180 amount, 0 direction union all select 2 ko, convert(datetime, '01.04.2017', 104) oper_date, 100 amount, 1 direction union all select 2 ko, convert(datetime, '11.04.2017', 104) oper_date, 380 amount, 0 direction union all select 2 ko, convert(datetime, '01.05.2017', 104) oper_date, 120 amount, 1 direction union all select 2 ko, convert(datetime, '11.05.2017', 104) oper_date, 480 amount, 0 direction union all select 2 ko, convert(datetime, '01.06.2017', 104) oper_date, 80 amount, 1 direction union all select 3 ko, convert(datetime, '01.01.2017', 104) oper_date, 125 amount, 1 direction union all select 3 ko, convert(datetime, '11.02.2017', 104) oper_date, 40 amount, 0 direction union all select 3 ko, convert(datetime, '01.03.2017', 104) oper_date, 90 amount, 1 direction union all select 3 ko, convert(datetime, '11.03.2017', 104) oper_date, 180 amount, 0 direction union all select 3 ko, convert(datetime, '01.06.2017', 104) oper_date, 100 amount, 1 direction union all select 3 ko, convert(datetime, '11.06.2017', 104) oper_date, 80 amount, 0 direction union all select 3 ko, convert(datetime, '01.08.2017', 104) oper_date, 120 amount, 1 direction union all select 3 ko, convert(datetime, '11.08.2017', 104) oper_date, 10 amount, 0 direction union all select 3 ko, convert(datetime, '01.09.2017', 104) oper_date, 80 amount, 1 direction union all select 4 ko, convert(datetime, '01.02.2017', 104) oper_date, 90 amount, 0 direction union all select 4 ko, convert(datetime, '11.02.2017', 104) oper_date, 180 amount, 1 direction union all select 4 ko, convert(datetime, '01.05.2017', 104) oper_date, 100 amount, 0 direction union all select 4 ko, convert(datetime, '01.08.2017', 104) oper_date, 120 amount, 1 direction union all select 4 ko, convert(datetime, '11.08.2017', 104) oper_date, 480 amount, 1 direction union all select 4 ko, convert(datetime, '01.09.2017', 104) oper_date, 80 amount, 1 direction ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 11:44 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Дописать запрос, для получения результата В результате запроса получаем 7 полей: NAME - название контрагента M5-M1 - 5 предыдущих месяцев M0 - текущий (последнний) месяц В первой строчке выводиться "Контрагент" и названия месяцев на русском языке далее идут строчки с названием контрагента и остатком на счете на конец месяца (в случае, если у него есть хоть одна операция со счетом) последней строчкой идут итоги - сумма средств/задолженностей на счетах всех контрагентов NAMEM5M4M3M2M1M0 Контрагентапрельмайиюньиюльавгустсентябрь Север470280340250550670Восток-5-51515125205Запад315-4535353535Юг90-10-10-10590670Итого: Делала так : Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 12:00 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Кареглазая_зая, Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 12:38 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Название месяца там лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 12:39 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Кареглазая_зая, 1. Остаток считается с начала времен до нужной даты (а не за месяц) 2. Предыдущие 5 месяцев правильнее определять через Dateadd, так операции могут быть не во всех периодах. 3. В подобной задаче Pivot может дать худшую производительность, чем Код: sql 1. Из-за дополнительных чтений таблицы движений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 12:52 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Kopelly, а если заменить конструкцию Код: sql 1. на Код: sql 1. по сути же тоже самое? или case лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 17:26 |
|
||
|
Написать запрос
|
|||
|---|---|---|---|
|
#18+
Кареглазая_заяKopelly, а если заменить конструкцию Код: sql 1. на Код: sql 1. по сути же тоже самое? или case лучше? А если @@VERSION написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2018, 17:51 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39639322&tid=1689803]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 367ms |

| 0 / 0 |
