|
Помогите с SQL-запросом | ☑ | ||
---|---|---|---|---|
0
jk3
29.07.11
✎
16:47
|
Есть простая табличка из 2-х колонок и 3 строк (к примеру):
Нужно преобразовать в такую табличку:
Как это сделать SQL-запросом? |
|||
1
mpei
29.07.11
✎
16:48
|
убери группировку по номенклатуре
|
|||
2
jk3
29.07.11
✎
16:49
|
(1) Её и нет
Считай 1-ю табличку просто исходной табличной частью дока. |
|||
3
ДенисЧ
29.07.11
✎
16:49
|
курсором и временной таблицей
|
|||
4
jk3
29.07.11
✎
16:50
|
(3) Понятно что с помощью временной таблицы, но КАК?
|
|||
5
ДенисЧ
29.07.11
✎
16:52
|
(4) открываешь курсор на исходную таблицу, читаешь по записи и делаешь цикл по значению второй колонки. В цикле инсёртишь в табличку
|
|||
6
acsent
29.07.11
✎
16:52
|
(4) ЗАЧЕМ?????
|
|||
7
jk3
29.07.11
✎
16:53
|
(6) Не мои прихоти. Надо чтобы так было.
|
|||
8
jk3
29.07.11
✎
16:54
|
(5) Ага, а перерь тоже самое, но на 1С v8, плиз :)
|
|||
9
ДенисЧ
29.07.11
✎
16:57
|
(8) ты просил на скуле :-)
Если с 8кой - то проще, не надо думать, что такое курсор |
|||
10
Axel2009
29.07.11
✎
16:59
|
ВЫБРАТЬ Номенклатура, 1 ИЗ Таблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 1 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 КАК Счетчик) КАК Номера
ПО Таблица.Количество < Номера.Счетчик |
|||
11
Axel2009
29.07.11
✎
17:00
|
ПО Таблица.Количество <= Номера.Счетчик
|
|||
12
jk3
29.07.11
✎
17:05
|
(10) Это не интересно вообще. Нужно для произвольного поля Количество.
Для статического количества я бы и так давно написал бы. |
|||
13
Axel2009
29.07.11
✎
17:06
|
(12) догадайся что надо сделать.
|
|||
14
jk3
29.07.11
✎
17:07
|
(13) А БЕЗ генерации кода SQL-запроса в цикле?
|
|||
15
Reset
29.07.11
✎
17:10
|
Получи максимальное значение количества,сформируй ТЗ, состоящую из строк со значениями 1 по макс, передай эту тз как параметр, соедини со своей по принципу из (10)
Текст запроса будет фиксированный) |
|||
16
Ненавижу 1С
гуру
29.07.11
✎
17:10
|
(14) БЕЗ нельзя
|
|||
17
Axel2009
29.07.11
✎
17:15
|
(14) это неправильная догадка. генерацию кода в скуль запросе делать не надо. нужно или гдето хранить заведомо большое количество записей с номерами (в табличке) что наиболее предпочтительно. или сформировать заведомо большую табличку, только не так
ВЫБРАТЬ 1 КАК Счетчик ... ВЫБРАТЬ МИЛЛИОН как Счетчик а ВЫБРАТЬ Табл1.Счетчик * 2 + Табл2.Счетчик КАК Счетчик ИЗ (ВЫБРАТЬ 0 КАК Счетчик ОБЪЕДИНИТЬ ВЫБРАТЬ 1) КАК Табл1, (ВЫБРАТЬ 0 КАК Счетчик ОБЪЕДИНИТЬ ВЫБРАТЬ 1) КАК Табл2 тут если сделать от 0 до 9 и сбацать из 6 таких, то количество будет до мильена |
|||
18
cViper
29.07.11
✎
17:18
|
(8) Курсор в переводе на язык 1с 8 - выборка.
|
|||
19
cViper
29.07.11
✎
17:23
|
+(18) да,(16) прав. ты так и не ответил, а зачем тебе это?
|
|||
20
Axel2009
29.07.11
✎
17:24
|
(19) нюню
|
|||
21
jk3
29.07.11
✎
17:25
|
(15) Нужно именно SQLем, т.к. это одна из вложенных выборок гигантского запроса. И данные в него получаются из другой временной таблицы.
(17) Сейчас попробую вкурить |
|||
22
jk3
29.07.11
✎
19:10
|
Всё, довкурил.
Сделал только до 100. Я думаю этого будет достаточно. Да и исполняться он будет значительно быстрее, чем до 1000. Ведь если в таб.части будет 1000 строк, то в фильтруемой выборке уже будет 1 млн. записей. И это только по одному документу.
|
|||
23
Axel2009
31.07.11
✎
11:38
|
неправильно довкурил.. до 100 так никто не делает..
ВЫБРАТЬ Табл0_9.Счетчик ПОМЕСТИТЬ ВТ ИЗ (ВЫБРАТЬ 0 КАК Счетчик ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК Табл0_9 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВТ2.Счетчик * 10 + ВТ.Счетчик + 1 КАК Счетчик ПОМЕСТИТЬ ВТ100 ИЗ ВТ КАК ВТ, ВТ КАК ВТ2 будет от 1 до 100. |
|||
24
jk3
01.08.11
✎
09:25
|
(23) Спасибо громадное за поправку!
Соответственно, до 1000 будет вот так:
Принцип понятен :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |