|
|
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL) ЗЫ: отдельно для White Owl . Это конечно прекрасный повод поглумиться над моим невежеством в SQL, но за дельные советы буду крайне признателен.Ну что-ж, я совсем злодей что-ли? Иногда я тоже бываю добрым :) KL (XL) Дано: CC Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total Days Acc. 5115 Acc. 513512FFR3 0 0 0 0 31 30 31 31 30 31 30 31 245 49.756 002MARC 0 0 0 0 31 30 31 31 30 31 30 31 245 33.924 6.730 Надо получить: Acc CC Month CostAcc. 5115 02MARC Jan 0Acc. 5115 02MARC Feb 0Acc. 5115 02MARC Mar 0Acc. 5115 02MARC Apr 0Acc. 5115 02MARC May 4.292Acc. 5115 02MARC Jun 4.154Acc. 5115 02MARC Jul 4.292Acc. 5115 02MARC Aug 4.292Acc. 5115 02MARC Sep 4.154Acc. 5115 02MARC Oct 4.292Acc. 5115 02MARC Nov 4.154Acc. 5115 02MARC Dec 4.292Acc. 5115 12FFR3 Jan 0Acc. 5115 12FFR3 Feb 0Acc. 5115 12FFR3 Mar 0Acc. 5115 12FFR3 Apr 0Acc. 5115 12FFR3 May 6.296Acc. 5115 12FFR3 Jun 6.093Acc. 5115 12FFR3 Jul 6.296Acc. 5115 12FFR3 Aug 6.296Acc. 5115 12FFR3 Sep 6.093Acc. 5115 12FFR3 Oct 6.296Acc. 5115 12FFR3 Nov 6.093Acc. 5115 12FFR3 Dec 6.296Acc. 5135 02MARC Jan 0Acc. 5135 02MARC Feb 0Acc. 5135 02MARC Mar 0Acc. 5135 02MARC Apr 0Acc. 5135 02MARC May 852Acc. 5135 02MARC Jun 824Acc. 5135 02MARC Jul 852Acc. 5135 02MARC Aug 852Acc. 5135 02MARC Sep 824Acc. 5135 02MARC Oct 852Acc. 5135 02MARC Nov 824Acc. 5135 02MARC Dec 852Acc. 5135 12FFR3 Jan 0Acc. 5135 12FFR3 Feb 0Acc. 5135 12FFR3 Mar 0Acc. 5135 12FFR3 Apr 0Acc. 5135 12FFR3 May 0Acc. 5135 12FFR3 Jun 0Acc. 5135 12FFR3 Jul 0Acc. 5135 12FFR3 Aug 0Acc. 5135 12FFR3 Sep 0Acc. 5135 12FFR3 Oct 0Acc. 5135 12FFR3 Nov 0Acc. 5135 12FFR3 Dec 0 ..... Наверняка все проще гораздо :-)Ну с точки зрения формального sql это не такая уж простая задача. У sql сложности с транспонированием таблиц. Но конечно если очень нужно, то можно из первой таблицы получить вторую вот примерно так (исходная таблица имеет имя #t, ну и некоторые колоноки я переименовал): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 20:00:13 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
2 Kyber & White Owl, Огромное спасибо обоим! Я в шоке - она ж фунциклирует. Пока остановился на решении Kyber из-за его относительной малогабаритности. В приложении рабочий пример. KL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 22:04:48 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL)...она ж фунциклирует... Немного поторопился :-( Пример, который я привел вначале, оказался с брачком. В столбце "СС" не уникальные значения как можно заключить из первоначального примера. Реальная таблица больше похожа на это: CC Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total Days Acc 5115 Acc 513512FFR3 0 0 0 0 31 30 31 31 30 31 30 31 245 49.756 002MARC 0 0 0 0 31 30 31 31 30 31 30 31 245 33.924 6.73012FFR3 0 0 0 0 31 30 31 31 30 31 30 31 245 32.016 002MARC 0 0 0 0 31 30 31 31 30 31 30 31 245 19.345 012FFR3 0 0 0 0 31 30 31 31 30 4 0 0 157 56.895 24.35602MARC 0 0 0 0 0 0 15 31 30 31 30 31 168 16.456 0 Сейчас код такой (файл с примером выше0: Код: plaintext 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. Вопрос: что и как надо сделать, чтобы в результирующем рекордсете данные группировались по "СС"? Т.е.: Acc CC Month CostAcc1 CC1 Jan # Feb # Mar # Apr # May # Jun # Jul # Aug # Sep # Oct # Nov # DEc # CC2 Jan # Feb # Mar # Apr # May # Jun # Jul # Aug # Sep # Oct # Nov # DEc #Acc 2 CC1 Jan # Feb # Mar # Apr # May # Jun # Jul # Aug # Sep # Oct # Nov # DEc # CC2 Jan # Feb # Mar # Apr # May # Jun # Jul # Aug # Sep # Oct # Nov # DEc # Попытки подставить в разных местах запроса " GROUP BY Data.CC " приводят к разного рода ошибкам. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 13:30:32 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
Вот сваял такое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Боюсь даже на реальном файле пробовать (1000 записей, 30 CC, 12 Acc) - думаю будет считать вечность :-) Еще бы строки с нулевым значением "Cost" удалить, но "WHERE Cost <> 0" никак не всовывается :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 17:57:05 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL) KL (XL)...она ж фунциклирует... Немного поторопился :-( Пример, который я привел вначале, оказался с брачком. В столбце "СС" не уникальные значения как можно заключить из первоначального примера. Реальная таблица больше похожа на это: CC Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total Days Acc 5115 Acc 513512FFR3 0 0 0 0 31 30 31 31 30 31 30 31 245 49.756 002MARC 0 0 0 0 31 30 31 31 30 31 30 31 245 33.924 6.73012FFR3 0 0 0 0 31 30 31 31 30 31 30 31 245 32.016 002MARC 0 0 0 0 31 30 31 31 30 31 30 31 245 19.345 012FFR3 0 0 0 0 31 30 31 31 30 4 0 0 157 56.895 24.35602MARC 0 0 0 0 0 0 15 31 30 31 30 31 168 16.456 0А в чем тогда уникальность строк? Вот например если мы возьмем CC=02MARC, по колонке Jun. Какой итоговый Cost у нас должен быть? А вообще, я бы посоветовал забыть про sql на таких данных и сделать простыми циклами. Будет быстрее и проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 18:33:04 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL)Боюсь даже на реальном файле пробовать (1000 записей, 30 CC, 12 Acc) - думаю будет считать вечность :-) Не, ничего 12-16 сек вполне сносно, хотя практически то же время, что мои циклы транспонирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 19:07:01 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
Таки точно ABC :) Ну, насколько я понимаю, тебе нужно обработать каждую строку, а потом сложить стоимость у повторяющихся cost-centers. Если да - то это превосходно сделает инструкция "GROUP BY". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:11:06 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
White OwlА в чем тогда уникальность строк? Уникальность строк в том, что каждая принадлежит уникальному сотруднику. Просто я Employee ID не включил в таблицу как впрочем и другие столбцы. White OwlВот например если мы возьмем CC=02MARC, по колонке Jun. Какой итоговый Cost у нас должен быть? Для CC=02MARC, по колонке Jun итоговый Cost должен быть: для Acc 5115: 6.522,73 для Acc 5135: 82,41 White OwlА вообще, я бы посоветовал забыть про sql на таких данных и сделать простыми циклами. Будет быстрее и проще. Это-то я и пытаюсь понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:46:16 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL)для Acc 5115: 6.522,73 Ага... Значит точка - это разделитель разрядов.... А я думаю, почему это у меня другие, как говорил мой шеф, нумеры... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:54:56 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
kyberТаки точно ABC :) Ну, насколько я понимаю, тебе нужно обработать каждую строку, а потом сложить стоимость у повторяющихся cost-centers. Если да - то это превосходно сделает инструкция "GROUP BY". Спасибо, kyber! Если я не ошибаюсь, то твой пример - это как раз то, что я написал выше, только я вывел еще поле "Months.Id" для правильной сортировке по месяцам: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:55:03 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
kyber KL (XL)для Acc 5115: 6.522,73 Ага... Значит точка - это разделитель разрядов.... А я думаю, почему это у меня другие, как говорил мой шеф, нумеры... :) Это на самом деле не принципиально на данной стадии - все равно числа те же. Вся ирония ситуации в том, что я использую запятую для разрядов, а для русского форума перевожу ее в точку :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 20:59:40 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
White OwlВот например если мы возьмем CC=02MARC, по колонке Jun. Какой итоговый Cost у нас должен быть? В финале должна получиться такая таблица (Cost округлен до целых): Acc CC Month Cost5115 02MARC Jan 05115 02MARC Feb 05115 02MARC Mar 05115 02MARC Apr 05115 02MARC May 6.7405115 02MARC Jun 6.5235115 02MARC Jul 8.2095115 02MARC Aug 9.7775115 02MARC Sep 9.4615115 02MARC Oct 9.7775115 02MARC Nov 9.4615115 02MARC Dec 9.7775115 12FFR3 Jan 05115 12FFR3 Feb 05115 12FFR3 Mar 05115 12FFR3 Apr 05115 12FFR3 May 21.5815115 12FFR3 Jun 20.8855115 12FFR3 Jul 21.5815115 12FFR3 Aug 21.5815115 12FFR3 Sep 20.8855115 12FFR3 Oct 11.7965115 12FFR3 Nov 10.0135115 12FFR3 Dec 10.3475135 02MARC Jan 05135 02MARC Feb 05135 02MARC Mar 05135 02MARC Apr 05135 02MARC May 855135 02MARC Jun 825135 02MARC Jul 855135 02MARC Aug 855135 02MARC Sep 825135 02MARC Oct 855135 02MARC Nov 825135 02MARC Dec 855135 12FFR3 Jan 05135 12FFR3 Feb 05135 12FFR3 Mar 05135 12FFR3 Apr 05135 12FFR3 May 4.8095135 12FFR3 Jun 4.6545135 12FFR3 Jul 4.8095135 12FFR3 Aug 4.8095135 12FFR3 Sep 4.6545135 12FFR3 Oct 6215135 12FFR3 Nov 05135 12FFR3 Dec 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 21:08:47 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL) White OwlВот например если мы возьмем CC=02MARC, по колонке Jun. Какой итоговый Cost у нас должен быть? В финале должна получиться такая таблица (Cost округлен до целых): Acc CC Month Cost5115 02MARC Jan 05115 02MARC Feb 05115 02MARC Mar 05115 02MARC Apr 05115 02MARC May 6.7405115 02MARC Jun 6.5235115 02MARC Jul 8.2095115 02MARC Aug 9.7775115 02MARC Sep 9.4615115 02MARC Oct 9.7775115 02MARC Nov 9.4615115 02MARC Dec 9.7775115 12FFR3 Jan 05115 12FFR3 Feb 05115 12FFR3 Mar 05115 12FFR3 Apr 05115 12FFR3 May 21.5815115 12FFR3 Jun 20.8855115 12FFR3 Jul 21.5815115 12FFR3 Aug 21.5815115 12FFR3 Sep 20.8855115 12FFR3 Oct 11.7965115 12FFR3 Nov 10.0135115 12FFR3 Dec 10.3475135 02MARC Jan 05135 02MARC Feb 05135 02MARC Mar 05135 02MARC Apr 05135 02MARC May 855135 02MARC Jun 825135 02MARC Jul 855135 02MARC Aug 855135 02MARC Sep 825135 02MARC Oct 855135 02MARC Nov 825135 02MARC Dec 855135 12FFR3 Jan 05135 12FFR3 Feb 05135 12FFR3 Mar 05135 12FFR3 Apr 05135 12FFR3 May 4.8095135 12FFR3 Jun 4.6545135 12FFR3 Jul 4.8095135 12FFR3 Aug 4.8095135 12FFR3 Sep 4.6545135 12FFR3 Oct 6215135 12FFR3 Nov 05135 12FFR3 Dec 0 Ну тогда все довольно просто. Добавь в свой макрос стейтмент типа такого: Код: plaintext 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. Запрос формируется в два приема, потому что VBA не хочет принимать столько много разрывов строки. Конечно ее можно сфорировать и циклом, было бы желание... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2008, 01:01:25 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
А меня заинтересовала сама задачка... Как раз сейчас я начинаю заниматься Activity Based Costing - мне кажется, как раз это и считается в твоем примере. KL (XL) , если у тебя есть еще какие-то файлы по этой задаче (меня интересует только внутренняя логика), ты можешь бросить мне на kyber@ua.fm? Думаю, с конфиденциальностью проблем быть не должно - я живу в Днепропетровске, не знаю, о какой компании идет речь, и полный набор данных мне не нужен. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2008, 11:48:39 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
kyberА меня заинтересовала сама задачка... Как раз сейчас я начинаю заниматься Activity Based Costing - мне кажется, как раз это и считается в твоем примере. KL (XL) , если у тебя есть еще какие-то файлы по этой задаче (меня интересует только внутренняя логика), ты можешь бросить мне на kyber@ua.fm? Думаю, с конфиденциальностью проблем быть не должно - я живу в Днепропетровске, не знаю, о какой компании идет речь, и полный набор данных мне не нужен. Спасибо. Вообще файл не мой и к тому же гад на испанском (переводить замучаешься). Если хочешь, на след. неделю могу попробовать прислать более подробный пример-схему. Но уже сейчас ясно, что White Owl был прав - транспонирование гораздо быстрее делать через цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 02:05:29 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL (XL)Но уже сейчас ясно, что White Owl был прав - транспонирование гораздо быстрее делать через цикл.Дык! :) Сталкиваясь с SQL люди почему-то думают что это такие волшебные команды которые сами сразу делают все выборки без вских там переборов данных. На самом то деле, внутри каждого SELECT'а прячется куча циклов, причем эти циклы частенько не оправданны. Поэтому, чаще всего, обращение к листу Экселя через ADO будет намного медленнее чем самостоятельная обработка данных через VBA и функции Экселя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 19:46:53 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL, посмотри мой вариант :-) Попробуй запустить его на реальном файле и скажи время выполнения ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 17:03:53 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
Что-то я засомневался в хорошей скорости работы того варианта для большой таблицы. Посему предлагаю оптимизированный вариант. Мой прогноз для таблицы в 1000 строк - пару десятых долей секунды :-) Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 03:40:19 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
Что-то я засомневался в хорошей скорости работы того варианта для большой таблицы. Посему предлагаю оптимизированный вариант. Мой прогноз для таблицы в 1000 строк - пару десятых долей секунды :-) Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 03:42:50 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
Нашёл один баг и одну ошибку в алгоритме. После работы над одибками решил проверить на условных данных - 1000 строк, 30СС и 12 Асс :-) Как я и предполагал, время выполнения - пару десятых секунды :-) Мой комп справляется чуть менее, чем за 0,5 с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 17:33:17 |
|
||
|
Сводная таблица в Экселе - Строки вместо чисел
|
|||
|---|---|---|---|
|
#18+
KL, только не молчи! Скажи свой отзыв ! Ведь для тебя старался ! :-) Пошло, не пошло, понравилось, не понравилось ну и, самое главное, время выполнения на твоих данных ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 17:52:50 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=35452088&tid=2180033]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
179ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 438ms |

| 0 / 0 |
