|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Добрый день! Есть запрос: SELECT [Запрос ПП МО].Class, Count([Запрос ПП МО].dbo_Devices.Code) AS PlanPov, Sum(0) AS FactPov FROM [Запрос ПП МО] where (((DateAdd("m",Nz([PovInterv],1),Nz([PredPoverka],Null))>=#4/1/2018#) And (DateAdd("m",Nz([PovInterv],1),Nz([PredPoverka],Null))<=#4/30/2018#))) OR ((([PredPoverka]>=#4/1/2018#) And ([PredPoverka]<=#4/30/2018#))) GROUP BY [Запрос ПП МО].Class UNION SELECT [Запрос ПП МО].Class, Sum(0) AS PlanPov, Count([Запрос ПП МО].dbo_Devices.Code) AS FactPov FROM [Запрос ПП МО] where ((([Запрос ПП МО].[PredPoverka])>=#4/1/2018# And ([Запрос ПП МО].[PredPoverka])<=#4/30/2018#)) GROUP BY [Запрос ПП МО].Class ORDER BY [Запрос ПП МО].Class; В результате получаются строки, которые не сгрупировались (в приложенном файле это 2 и 3 строки), а хотелось бы их объединить в одну строку. Подскажите, пожалуйста, как оптимизировать запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 11:17 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, у вас почему то sum и count в разном порядке стоят Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 11:44 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, Пусть, например, этот ваш исходный запрос называется Zapos1, тогда, если я вас правильно понял, вам поможет следующий запрос на основе исходного Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 11:48 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, можете попробовать Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 11:53 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, в разном порядке из-за того, что в в первом селекте я выбираю данные по полю PlanPov (соответственно все данные в поле FactPov будут равны нулю), а во втором селекте наоборот с начало выбираю данные по полю FactPov (соответственно все данные в поле PlanPov будут равны нулю). В результате не правильное объединяются строки в которых есть данные отличные от нуля и по полю FactPov и по полю PlanPov. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 11:59 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, думаю, разумнее показать структуру исходных данных и сформулировать исходную задачу (а не то, как Вы её собрались решить). Сдаётся мне, что от UNION вполне можно избавиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 12:11 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, SELECT z.class, Sum(z.PlanPov), Count(z.FactPov) FROM (SELECT w.Class, 1 AS PlanPov,0 AS FactPov FROM [Запрос ПП МО] w where (((DateAdd("m",Nz([PovInterv],1),Nz([PredPoverka],Null))>=#4/1/2018#) And (DateAdd("m",Nz([PovInterv],1),Nz([PredPoverka],Null))<=#4/30/2018#))) OR ((([PredPoverka]>=#4/1/2018#) And ([PredPoverka]<=#4/30/2018#))) UNION SELECT w.Class, 0 AS PlanPov, 1 AS FactPov FROM [Запрос ПП МО] w where (((w.[PredPoverka])>=#4/1/2018# And (w.[PredPoverka])<=#4/30/2018#))) AS z GROUP BY z.class; не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 13:02 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Akina, приложил БД ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 13:21 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Вам же советовали:zimkonAziz, Пусть, например, этот ваш исходный запрос называется Zapos1, тогда, если я вас правильно понял, вам поможет следующий запрос на основе исходного Код: sql 1.
Ну так и сделайте: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 13:40 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
sdku, это понятно, и конечно же это будет работать... но хочется задачу реализовать в одном запросе. Поэтому и попросил помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 14:25 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, Тогда убивайте время и убеждайтесь,что в запросе на объединение нескольких не удастся сделать общую для всех,входящих в него запросов, группировку (а при мощности современных компьютеров речь о замедлении работы оптимизированных запросов ни разу не актуальна. Создания 2-3 "лишних" запросов,если в таблицах несколько тысяч записей,Вы не заметите) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 14:49 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, попробуйте так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 14:52 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, Вам необходимо узнать какие приборы(наименование) и их количество необходимо поверить в текущем месяце в соответствии с датой предыдущей поверки и межповерочным интервалом. Все это в одной строке. Я правильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 15:30 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, спасибо. Это то что мне нужно было. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 15:38 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
PS: по плану и фактически. Но в таблице я не увидел поля с отметкой о проведении поверки(или даты фактической поверки) В принципе, я бы сделал 2 таблицы:приборы учета 1:М поверки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 15:39 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
sdku, да все так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 15:39 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, а вот если срок поверки 15.4.2018 а фактически она проведена 25.4.2018 (причин задержки может быть мильон и данных о дате фактической поверки у Вас нет),то какие штрафные санкции и за какой период Вы будете применять-я все это к тому,что на этой структуре серьезную,"боевую" БД не создать ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 16:02 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
sdku, Правильно мыслите. Прекрасно понимаю эту проблему. Но задача контроля сроков поверки не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 17:05 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Aziz, сейчас нет,но когда возникнет, придется все переделывать,а при правильной структуре пришлось бы добавить пару отчетов(форм, запросов ничего не меняя,а лишь добавив) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2018, 19:25 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, решил немного усложнить запрос. Добавил в него параметры (дата начала и дата конца). Хочу на основании этого запроса с параметрами создать отчет. Вот что получилось: Private Sub Report_Open(Cancel As Integer) Dim q As DAO.QueryDef Dim rst As DAO.Recordset Set q = CurrentDb.QueryDefs("МойЗапросСпараметрами") q.Parameters("DataN").Value = Format(Me.Поле17, "mm\/dd\/yyyy") q.Parameters("DataK").Value = Format(Me.Поле21, "mm\/dd\/yyyy") q.Execute q.close: Set q=Nothing End Sub Как я понимаю, в данном случае q.Execute не подходит. Посоветуете как правильно открыть запрос ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 13:51 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
авторКак я понимаю, в данном случае q.Execute не подходит это не самая большая проблема в вашем коде в каких отношениях состоят q и Report_Open ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:06 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
bubucha, еще в никаких. Пока только пытаюсь понять как это реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 14:20 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
AzizПока только пытаюсь понять как это реализовать. Сделать форму - в ней два поля для параметров, в МойЗапросСпараметрами для поля DataN прописать условие типа =[Forms]![МояФорма]![МойПараметр1].[Text], для второго параметра по аналогии... добавить кнопку Код: vbnet 1.
..из Report_Open все выкинуть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:01 |
|
union с группировкой и условием
|
|||
---|---|---|---|
#18+
Считаю что структура должна быть примерно такой.а дальше создавайте соответствующие формы(запросы,отчеты) после заполнения поля с отметкой о поверке добавляйте(запросом на добавление или рекордсетом) записи в соответствующие таблицы. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2018, 15:32 |
|
|
start [/forum/topic.php?desktop=1&fid=45&tid=1611507]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 454ms |
0 / 0 |