|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
- ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 00:40 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Why not...? Код: plaintext 1.
for example ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 00:54 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Согласен, спросил кривовато. Но проблема сложить именно символьные строки, а не числа, лежащие как строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 01:01 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Можно при помощи function Простите - должен убегать, если не ответят - напишите, пришлю мою function из дому ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 01:21 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Может вам подойдет BinCheckSum? С уважением ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 09:23 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
BormotunСогласен, спросил кривовато. Но проблема сложить именно символьные строки, а не числа, лежащие как строки.Опять очень плохо сформулировали, что вам нужно. Для начала прочтите "Top 10, 1. Вопрос". Потому, что у меня есть подозрение, что вам нужно "Top 10, 10. Вопрос". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 09:32 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Bormotun- может вам COUNT() нужен? или так: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 09:53 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Knyazev Alexey Bormotun- может вам COUNT() нужен? или так: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 09:54 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
По-моему Bormotun просто хочет сцепить строковые значения из разных записей с группировкой по какому-то полю но упорно это скрывает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 13:22 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 13:27 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Жаль только с большими данными не получиться... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 17:31 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Даже подумать не мог, что мой вопрос можно трактовать таким количеством способов, сорри! :( На самом задача такая: Есть огромный запрос по десятку связанных таблиц, да еще динамический, т.к. количество колонок каждый раз меняется в зависимости от выбранного пользователем периода. В этом запросе происходит в том числе группировка по нескольким полям для подсчета суммы чч по сотруднику в месяц по задачам. И нужно сформировать колонку комментарий, которая должна представлять из себя строку, сложенную из всех описанний задач, просуммированных для данного сотрудника в данный месяц. Опять не совсем понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 18:47 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
BormotunИ нужно сформировать колонку комментарий, которая должна представлять из себя строку, сложенную из всех описанний задач, просуммированных для данного сотрудника в данный месяц. Это то, что показано в моем примере. И, как правильно сказали, ограничение длины будет - в 2000 сиквеле это 8000 символов. Если у вас 2005, то можно написать varchar(MAX) - это повеселее. BormotunЕсть огромный запрос по десятку связанных таблиц, да еще динамический, т.к. количество колонок каждый раз меняется в зависимости от выбранного пользователем периода. А вот это надо менять. Это неправильная схема. То есть сделать-то можно - динамический запрос возможно написать, но это плохой подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 18:52 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
GreenSunriseЭто то, что показано в моем примере. И, как правильно сказали, ограничение длины будет - в 2000 сиквеле это 8000 символов. Если у вас 2005, то можно написать varchar(MAX) - это повеселее. То, что показано в примере - очевидно, но у меня никак не получается прикрутить что-то подобное к моему запросу :( Код: 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. 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.
GreenSunrise А вот это надо менять. Это неправильная схема. То есть сделать-то можно - динамический запрос возможно написать, но это плохой подход. Уважаемый коллега, а какая правильная? Сделать таблицу о 240 колонках, для каждого месяца по колонке лет на 20? Так конечно проще спору нет, но правильней и красивей ли? Может есть еще какие -то решения, которые я просто не вижу? Буду очень признателен за науку. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 19:27 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Теперь ясно, что вы хотели. Ваш пример разбирать не буду - в нем много ошибок. Так это рабоать не будет. Дам свой примерчик в качестве идеи. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 19:51 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
В догонку. У вас таблицы объединяются через left join. Это значит, что среди сцепляемых строк может быть строка со значением null. Т.е, даже если другие строки не null - весь результат сцепления, может быть null. Я вам специально в примере создал такую строку, и добавил запятые, чтобы было ясна проблема и способ ее разрешения. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 20:01 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
BormotunУважаемый коллега, а какая правильная? Сделать таблицу о 240 колонках, для каждого месяца по колонке лет на 20? Так конечно проще спору нет, но правильней и красивей ли? Может есть еще какие -то решения, которые я просто не вижу? Буду очень признателен за науку. Ваш пример мне разбирать совершенно влом. Но обычно, когда начинается разговор о динамическом количестве колонок, выясняется, что надо было делать структуру, где добавлялись бы строки, а не колонки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 20:45 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
BormotunНа самом задача такая Насколько я понимаю, вы имеете в виду конкатенацию строк? То есть, возможно, захотите потом разделять элементы в строке, скажем, запятыми? Тогда эта задача должна выполняться агрегатной функцией. Написать ее в SQL 2005 можно только на CLR: ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/denet9/html/bad9b7e8-5967-4afa-8dc8-6d840faf9372.htm З. Ы. Вариант, предложенный уважаемым Prolog, работает, и на небольшой базе проблем с ним возникнуть не должно. Однако, вызов функции связан с крайне высокими накладными расходами (недавно пришлось столкнуться, тут на форуме это обсуждалось) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 20:50 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
2 Prolog: Спасибо, теперь понял. Жаль, что без функции никак :( 2 GreenSunrise: Я вовсе не просил разбирать мой пример, а подсказать как без динамических запросов можно решить довольно общую задачу: когда данные о чем либо хранятся в привязке к дате и нужно их получать за разные интервалы времени помесячно. В самой структуре БД конечно добавляются строки вида "дата-значение", но выводить-то их надо где месяц уже столбец... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2007, 21:11 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Bormotun В самой структуре БД конечно добавляются строки вида "дата-значение", но выводить-то их надо где месяц уже столбец... Вы в сторону WITH CUBE смотрели? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2007, 14:25 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
Кот МатроскинВы в сторону WITH CUBE смотрели? Если про это: "Summarizing Data Using CUBE", то смотрел. Возможно в 2005 что-то изменилось, но в 2000 это совсем не то :( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2007, 16:27 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
PrologТеперь ясно, что вы хотели. Ваш пример разбирать не буду - в нем много ошибок. Так это рабоать не будет. Дам свой примерчик в качестве идеи. Код: 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.
данный пример хорош, когда запросом возвращается малое количество строк, т.к. вызов функции будет осуществлен для каждой из них(т.е. ф-я отработает количество раз = количество строк, возвращаемых запросом). Если записей много, лучше создать временную таблицу с полями, запроса, поле comment, при инсерте оставить пустым, затем заполнить его 1 апдейтом. Стоимость такого запроса будет значительно меньше, чем при использовании функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2007, 06:17 |
|
А можно как-то сделать SUM() для varchar-a? (-)
|
|||
---|---|---|---|
#18+
STRING_AGG начиная с 2017 https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2020, 11:04 |
|
|
start [/forum/topic.php?fid=46&msg=34705490&tid=1685509]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 165ms |
0 / 0 |