|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
Добрый день! Есть таблица, в которую вводятся временные показатели в 10 полей. Каждое поле - это какая-то активность на производственной линии. Например в поле "Работа линии" вводятся 2 записи "00:00" и "02:40", затем в поле "Зачистка линии" вводятся показатели "02:40" и "03:10" и т.д. Таким образом составляется Карта работы линии по смене. Для визуализации транспонирую таблицу со значениями по смене с разбивкой по фиксированным столбцам. Составляю 10 перекрёстных запросов (в таблице 10 полей с введёнными данными), затем с помошью "Union" свожу их вместе и пускаю в качестве рекордсета на форму. На форме (в формате "Datasheet"), с помощью Условного форматирования, подсвечиваю ячейки, в которых имеются данные. Разбивка интервала для фиксированных столбцов идёт по 10 мин. Запрос 1 (QryVisualRobLin_Par1_Zmina1): TRANSFORM Max(TblKartkyVvedZnach.Par1Txt) AS MaxOfPar1Txt SELECT TblKartkyKatalogZmist.Parametr_1_NazvaTxt FROM TblKartkyKatalogZmist LEFT JOIN TblKartkyVvedZnach ON TblKartkyKatalogZmist.ID_KartkyKatalogZmist = TblKartkyVvedZnach.FK_KartkyVvedZnach WHERE (((TblKartkyVvedZnach.FK_KartkyVvedZnach)=1) AND ((TblKartkyVvedZnach.FK_DataWork)=[Forms]![FrmZagalna]![Frm_Glavna].[Form]![ID_DataWork]) AND ((TblKartkyVvedZnach.FK_Kartka)=[Forms]![FrmZagalna]![FrmKartkyKatalogZmistGolovna].[Form]![PerelikLng])) GROUP BY TblKartkyKatalogZmist.Parametr_1_NazvaTxt PIVOT TblKartkyVvedZnach.Par1Txt In ('00:00','00:10','00:20','00:30','00:40','00:50','01:00','01:10','01:20','01:30','01:40','01:50','02:00','02:10','02:20','02:30','02:40','02:50','03:00','03:10','03:20','03:30','03:40','03:50','04:00','04:10','04:20','04:30','04:40','04:50','05:00','05:10','05:20','05:30','05:40','05:50','06:00','06:10','06:20','06:30','06:40','06:50','07:00','07:10','07:20','07:30','07:40','07:50','08:00'); Запрос 2 (QryVisualRobLin_Par2_Zmina1): TRANSFORM Max(TblKartkyVvedZnach.Par2Txt) AS MaxOfPar2Txt SELECT TblKartkyKatalogZmist.Parametr_2_NazvaTxt FROM TblKartkyKatalogZmist LEFT JOIN TblKartkyVvedZnach ON TblKartkyKatalogZmist.ID_KartkyKatalogZmist = TblKartkyVvedZnach.FK_KartkyVvedZnach WHERE (((TblKartkyVvedZnach.FK_KartkyVvedZnach)=1) AND ((TblKartkyVvedZnach.FK_DataWork)=[Forms]![FrmZagalna]![Frm_Glavna].[Form]![ID_DataWork]) AND ((TblKartkyVvedZnach.FK_Kartka)=[Forms]![FrmZagalna]![FrmKartkyKatalogZmistGolovna].[Form]![PerelikLng])) GROUP BY TblKartkyKatalogZmist.Parametr_2_NazvaTxt PIVOT TblKartkyVvedZnach.Par2Txt In ('00:00','00:10','00:20','00:30','00:40','00:50','01:00','01:10','01:20','01:30','01:40','01:50','02:00','02:10','02:20','02:30','02:40','02:50','03:00','03:10','03:20','03:30','03:40','03:50','04:00','04:10','04:20','04:30','04:40','04:50','05:00','05:10','05:20','05:30','05:40','05:50','06:00','06:10','06:20','06:30','06:40','06:50','07:00','07:10','07:20','07:30','07:40','07:50','08:00'); ... и так 10 запросов. Затем UNION select * from QryVisualRobLin_Par1_Zmina1 UNION ALL select * from QryVisualRobLin_Par2_Zmina1 UNION ALL select * from QryVisualRobLin_Par3_Zmina1 UNION ALL select * from QryVisualRobLin_Par4_Zmina1 UNION ALL select * from QryVisualRobLin_Par5_Zmina1 UNION ALL select * from QryVisualRobLin_Par6_Zmina1 UNION ALL select * from QryVisualRobLin_Par7_Zmina1 UNION ALL select * from QryVisualRobLin_Par8_Zmina1 UNION ALL select * from QryVisualRobLin_Par9_Zmina1 UNION ALL select * from QryVisualRobLin_Par10_Zmina1; Уважаемые форумчане, 1) Как можно скрыть те столбцы, где нет ниодного значения? 2) Можно ли введённые значения расположить по фиксированным столбцам в случае, если точно не соответствует столбцу? Например "01:25" надо расположить в столбце "01:30", т.к. разбивка идёт с интервалом в 10 минут Заранее благодарен!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 10:30 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
Se16_Vlad... и так 10 запросов И чем они отличаются ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 11:48 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Разные столбцы транспонирую в строки: Par1Txt; Par2Txt; ... Par10Txt. Запрос 1 - Par1Txt Запрос 2 - Par2Txt ... Запрос 10 - Par10Txt ... И затем UNION ALL эти запросы свожу вместе ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 12:01 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
Se16_Vlad2) Можно ли введённые значения расположить по фиксированным столбцам в случае, если точно не соответствует столбцу? Например "01:25" надо расположить в столбце "01:30", т.к. разбивка идёт с интервалом в 10 минут Надо PIVOT делать не по полю, а по выражению, приводящему к правильному округлению. Например для "07:41", "07:50" и "07:51" (часы и минуты можно получить из строки с помощью Left и Right): Код: vbnet 1. 2. 3. 4. 5. 6.
Se16_Vlad 1) Как можно скрыть те столбцы, где нет ниодного значения? Если результат выводится в табличной форме, то можно пройтись по записям в RecordsetClone, проанализировать поля, а затем скрыть/показать столбцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:57 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
На стадии формирования запросов, до передачи в табличную форму рекордсета, никак нельзя скрыть поля, где все значения "Null"? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 15:01 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
Se16_VladНа стадии формирования запросов, до передачи в табличную форму рекордсета, никак нельзя скрыть поля, где все значения "Null"? Ну, если у вас UNION запрос сохраненный, то можно открыть Recordset на запросе, возвращающем из него MAX для каждого поля - пройтись по коллекции Fields и составить новый SELECT, перечислив в нем только поля, в которых не Null, а затем вставить его в источник формы. Но в форме есть все поля и к ним привязаны поля источника, которых в нем может и не быть. Это еще дополнительная возня. Лучше уж вываливать все это в Ёксель и там анализировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 16:13 |
|
SQL - Перекрёстные запросы с выводом по фикс.столбцам и затем их "UNION"
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), ... мне нужно это делать именно в ACCESS. Пользователь перемещается по записям главной формы (там, где указаны Линия, Дата, Смена, ... и т.д.), а на подчинённой табличной форме (к которой и делаются перекрёстные запросы и затем UNION) должна показываться именно эта визуализация работы линии. Если показывать все 49 полей временного интервала (интервал - 10 мин.), то конечно, без скролинга пользователя по подчинённой форме не обойтись, а это очень неудобно. Если же скрывать поля, которые не имеют значений, то получается значительно удобоваримее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 16:28 |
|
|
start [/forum/moderation_log.php?user_name=Pidjit]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 498ms |
total: | 649ms |
0 / 0 |