Имя: Пароль:
IT
 
Решение для таблицы врачей
0 Ненавижу 1С
 
гуру
11.11.13
10:19
В продолжение темы v8: Как обработать такую таблицу
Жаль закрыли, но я приведу решение
1 Ненавижу 1С
 
гуру
11.11.13
10:19
ВЫБРАТЬ
    "Терапевт" КАК Врач,
    10 КАК Пн,
    NULL КАК Вт,
    12 КАК Ср,
    NULL КАК Чт,
    10 КАК Пт,
    NULL КАК Сб
ПОМЕСТИТЬ Расписание

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Терапевт",
    11,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Терапевт",
    NULL,
    15,
    NULL,
    NULL,
    NULL,
    NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Терапевт",
    NULL,
    18,
    NULL,
    NULL,
    NULL,
    NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Хирург",
    NULL,
    NULL,
    NULL,
    12,
    NULL,
    17

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Хирург",
    NULL,
    11,
    NULL,
    NULL,
    NULL,
    NULL
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Пн) КАК Номер,
    Расписание.Пн КАК Пн,
    NULL КАК Вт,
    NULL КАК Ср,
    NULL КАК Чт,
    NULL КАК Пт,
    NULL КАК Сб
ПОМЕСТИТЬ Временная
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Пн >= Расписание1.Пн

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Пн

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Пн) > 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Вт),
    NULL,
    Расписание.Вт,
    NULL,
    NULL,
    NULL,
    NULL
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Вт >= Расписание1.Вт

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Вт

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Вт) > 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Ср),
    NULL,
    NULL,
    Расписание.Ср,
    NULL,
    NULL,
    NULL
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Ср >= Расписание1.Ср

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Ср

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Ср) > 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Чт),
    NULL,
    NULL,
    NULL,
    Расписание.Чт,
    NULL,
    NULL
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Чт >= Расписание1.Чт

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Чт

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Чт) > 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Пт),
    NULL,
    NULL,
    NULL,
    NULL,
    Расписание.Пт,
    NULL
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Пт >= Расписание1.Пт

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Пт

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Пт) > 0

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Расписание.Врач,
    КОЛИЧЕСТВО(Расписание1.Сб),
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    Расписание.Сб
ИЗ
    Расписание КАК Расписание
        ЛЕВОЕ СОЕДИНЕНИЕ Расписание КАК Расписание1
        ПО Расписание.Врач = Расписание1.Врач
            И Расписание.Сб >= Расписание1.Сб

СГРУППИРОВАТЬ ПО
    Расписание.Врач,
    Расписание.Сб

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Расписание1.Сб) > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Временная.Врач КАК Врач,
    СУММА(Временная.Пн) КАК Пн,
    СУММА(Временная.Вт) КАК Вт,
    СУММА(Временная.Ср) КАК Ср,
    СУММА(Временная.Чт) КАК Чт,
    СУММА(Временная.Пт) КАК Пт,
    СУММА(Временная.Сб) КАК Сб
ИЗ
    Временная КАК Временная

СГРУППИРОВАТЬ ПО
    Временная.Врач,
    Временная.Номер

УПОРЯДОЧИТЬ ПО
    Врач,
    Временная.Номер
2 1dvd
 
11.11.13
10:26
Я примерно так и предлагал
3 Ненавижу 1С
 
гуру
11.11.13
10:27
ограничение: у разных строк одного врача не должно стоять одно и тоже значение в одной колонке
4 Rie
 
11.11.13
10:29
(0) Исходная задача неизвестна.
Одна из проблем - не факт, что у ТС той ветки были поля Пн, Вт и т.д. Поскольку - если это расписание, то там должно быть два времени; кроме того, ТС упоминал поле День.
5 Ненавижу 1С
 
гуру
11.11.13
10:30
+(3) если с неравенствами чуть по шаманить, то можно добиться эффекта сворачивания таких значений правильно
6 Wobland
 
11.11.13
10:30
(0) ты мне конкретный контрпример приведёшь на задачу о стрелках? не могу оценить верность решения
7 Ненавижу 1С
 
гуру
11.11.13
10:30
(4) я решал, как понимал, мне было интересно, чего тебе надо?
8 Rie
 
11.11.13
10:31
(7) Какую задачу решал-то? Задача - неизвестна. А решений - так их и в той ветке приводилось.
9 Wobland
 
11.11.13
10:32
(7) да ты правильно понял. мне надо понять, кто из нас прав. мой ответ - 12
10 Ненавижу 1С
 
гуру
11.11.13
10:32
(8) сворачивания данных, вообще мне показалось условие интуитивно понятным
11 Rie
 
11.11.13
10:35
(10) Об этом в той ветке говорилось. Причём, поскольку ХЗ как у топикстартера данные организованы - предлагались вычисляемые поля, что даёт универсальное решение.
Затем ТС объявил, что ему нужна не группировка, а сортировка ("терапевта" вверх двинуть). Тоже решается вычисляемыми полями.
Затем вдруг оказалось, что там не числа, а значения перечислений.
Не, ну "пойди туда, не знаю, куда; принеси то, не знаю что...". Оно, конечно, тоже задача...
12 Cube
 
11.11.13
10:36
О, а все оказывается тут уже?)))
13 wertyu
 
11.11.13
10:37
ту задачу запросом не решить, надо делать рекурсию
14 Rie
 
11.11.13
10:37
(12) Дык... Задача-то на самом деле есть. Вопрос только в том - какая?
15 Ненавижу 1С
 
гуру
11.11.13
10:37
(11) ну не имеет человек точно формулировать, да огрызается еще - все были такими
короче, понять и простить (с)

(13) я же решил
16 Rie
 
11.11.13
10:38
(13) Какую "ту"? И на фига тут рекурсия?
17 Rie
 
11.11.13
10:38
(15) А от человека и не требовалось формулировать. Задача - _экзаменационная_. Надо было просто текст скопировать.
18 wertyu
 
11.11.13
10:39
(15) подогнал
вот подсказки: "потому что 10 меньше 11", "Новая строка в графике должна добавляться в график только в том случае,                                                
если часы нельзя поместить в уже существующую строку графика для данного врача и дня недели."
19 Cube
 
11.11.13
10:40
(15) "я же решил"
Это вряд ли... :)
Исходного текста никто не знает...
20 Ненавижу 1С
 
гуру
11.11.13
10:40
(9) мы чего по веткам будем скакать, давай я создам отдельную
(17) экзаменационные тоже бывают те еще, вот вчера решал с дочкой 3 класс: "рыбак поймал 7 окуней, а карасей в 5 раз меньше, сколько поймал рыбак карасей?"

(18) ну значит доп упорядочивание нужно, спорить не буду
21 wertyu
 
11.11.13
10:41
(16) см подсказки в (18) там запросом не сделать
22 wertyu
 
11.11.13
10:42
(21).3 да как ты определишь заполнение поля строки из другой строки?
23 Wobland
 
11.11.13
10:42
(20) возражений не имею. хотя, в там уже всё сказано имхо
24 Rie
 
11.11.13
10:44
(21) Ну и зачем там рекурсия? Одним запросом выявняем, можно ли добавить строку. В зависимости от того, можно или нельзя - добавляем или не добавляем.
25 Зойч
 
11.11.13
10:46
Соединение по номеру строки. тут нет ничего нового
26 Cube
 
11.11.13
10:48
(25) О, новенький)))
Это тебе: http://fonarya.net/krokodil-ili-brevno
27 Ненавижу 1С
 
гуру
11.11.13
11:27
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.