![]() |
![]() |
![]() |
|
Как сделать "горизонтальные" результаты запроса? | ☑ | ||
---|---|---|---|---|
0
Джайрикон
04.04.12
✎
15:50
|
Есть таблица цен:
БУК ЦЕНА ТИП "А" 15руб закупочная "А" 24руб оптовая "А" 30руб розничная "Б" 19руб закупочная "В" 12руб розничная "Г" 61руб розничная Как получить запросом таблицу: БУК ЗАКУП РОЗН ОПТ "А" 15руб 30руб 24руб "Б" 19руб _____ _____ "В" _____ 12руб _____ "Г" _____ 61руб _____ Колонки ЗАКУП РОЗН ОПТ задаются в запросе вручную, а не берутся "автоматически" из колонки ТИП. |
|||
1
m-serg74
04.04.12
✎
15:53
|
через ВЫБОР КОГДА ТОГДА КОНЕЦ КАК ЗАКУП не?
|
|||
2
Kashemir
04.04.12
✎
15:53
|
||||
3
КМ155
04.04.12
✎
15:58
|
(0) три левых соединения
|
|||
4
golden-pack
04.04.12
✎
16:00
|
+Обязательно СКД
|
|||
5
Джайрикон
04.04.12
✎
16:31
|
(2) На этом примере попытался сделать свой рабочий запрос. Но получается: Цена1 заполняет какой-то ценой, а Цена2 и Цена3 остаются строго пустыми.
//Цена1 заполняет какой-то ценой, а Цена2 и Цена3 остаются ВЫБРАТЬ Ц.Номенклатура.Ссылка КАК Номенклатура, МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена1, МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип2 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена2, МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип3 ТОГДА Ц.Цена ИНАЧЕ NULL КОНЕЦ) КАК Цена3 ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата) КАК Ц СГРУППИРОВАТЬ ПО Ц.Номенклатура.Ссылка |
|||
6
Джайрикон
04.04.12
✎
16:34
|
(3) Левые соединения. Никак не могу сообразить даже приблизительно что можно сделать.
|
|||
7
Maxus43
04.04.12
✎
16:36
|
самое простое (1), чем не устраивает?
|
|||
8
Джайрикон
04.04.12
✎
16:36
|
(4) Система Компоновки Данных. Пока что опыта здесь ноль.
|
|||
9
hhhh
04.04.12
✎
16:38
|
(8) всё-таки с какого бодуна вы поставили NULL там? Для красоты? Попробуйте
МАКСИМУМ(ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ) КАК Цена1, |
|||
10
Джайрикон
04.04.12
✎
16:40
|
(7) Нужные данные разнесены по строкам. А конструкция ВЫБОР КОГДА ТОГДА КОНЕЦ работает (насколько я понимаю) только с данными в одной выбираемой строке, а мне нужно три данных из трёх разных строк.
|
|||
11
Maxus43
04.04.12
✎
16:42
|
(10) 3 поля и делай.
Выбор когда "ЗАКУП" Тогда Сумма Иначе 0 Конец Выбор когда "РОЗН" Тогда Сумма Иначе 0 Конец Выбор когда "ОПТ" Тогда Сумма Иначе 0 Конец |
|||
12
Джайрикон
04.04.12
✎
16:42
|
(9) Вместо NULL поставил 0. Результат прежний: Цена1 заполняется, а Цена2 и Цена3 пустые.
|
|||
13
hhhh
04.04.12
✎
16:46
|
(12) ну тогда &Тип2 и &Тип3 проверь.
и пиши по человечески ВЫБРАТЬ Ц.Номенклатура КАК Номенклатура, и СГРУППИРОВАТЬ ПО Ц.Номенклатура а то какой-то экзотический запрос получается. |
|||
14
Джайрикон
04.04.12
✎
16:46
|
(11) Цена2 и Цена3 всё так же пустые
ВЫБРАТЬ Ц.Номенклатура.Ссылка КАК Номенклатура, ВЫБОР КОГДА Ц.ТипЦен=&Тип1 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена1, ВЫБОР КОГДА Ц.ТипЦен=&Тип2 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена2, ВЫБОР КОГДА Ц.ТипЦен=&Тип3 ТОГДА Ц.Цена ИНАЧЕ 0 КОНЕЦ КАК Цена3 ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата) КАК Ц УПОРЯДОЧИТЬ ПО Ц.Номенклатура.Ссылка |
|||
15
Джайрикон
04.04.12
✎
16:49
|
(13)
З.Параметры.Вставить("Тип1",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная")); З.Параметры.Вставить("Тип2",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая")); З.Параметры.Вставить("Тип3",Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Крупная")); Всё тут нормально, такие значения есть. |
|||
16
m-serg74
04.04.12
✎
18:07
|
(15) ты обманываешь))) проверь есть ли в рег. записи для таких типов на такую дату...
|
|||
17
КМ155
04.04.12
✎
18:12
|
(10) а так:
ВЫБРАТЬ Товар.Ссылка, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип1.Цена, 0) КАК Цена_первыйТип, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип2.Цена, 0) КАК Цена_второйТип, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихТип3.Цена, 0) КАК Цена_третийТип ИЗ Справочник.Номенклатура КАК Товар ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &первыйТип) КАК ЦеныНоменклатурыСрезПоследнихТип1 ПО (ЦеныНоменклатурыСрезПоследнихТип1.Номенклатура = Товар.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &второйТип) КАК ЦеныНоменклатурыСрезПоследнихТип2 ПО (ЦеныНоменклатурыСрезПоследнихТип2.Номенклатура = Товар.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &третийТип) КАК ЦеныНоменклатурыСрезПоследнихТип3 ПО (ЦеныНоменклатурыСрезПоследнихТип3.Номенклатура = Товар.Ссылка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |