ошибка с INSERT из-за подзапроса - PullRequest
0 голосов
/ 17 мая 2018

Я настраиваю задание на передачу некоторых данных, которые стираются программой, которая их использует, чтобы мы могли хранить данные дольше и отслеживать их.

Я получаю эту ошибку: «Столбец nextgen.ngprod.dbo.appt_slots.start_date 'недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY."

Но когда я добавляю группу, я получаю сообщение об ошибке: «Невозможно использовать агрегат или подзапрос в выражении, используемом для группы, списком предложения GROUP BY».

INSERT INTO [Analyst_db].[dbo].[appt_slot_util]
SELECT 
a.start_date,
a.Loc,a.Spec,
a.slots_avail,
a.slots_booked,
a.slots_open
FROM
(
SELECT asl.start_date
        , SUBSTRING(lm.location_name,6,2) as Loc
        , SUBSTRING(lm.location_name,9,3) as Spec
        , SUM(asl.overbook_limit) as slots_avail
        , SUM(asl.appt_count) as slots_booked
        , SUM(asl.overbook_limit)-SUM(asl.appt_count) as slots_open
FROM nextgen.ngprod.dbo.appt_slots asl
    JOIN nextgen.ngprod.dbo.location_mstr lm ON lm.location_id = asl.location_id
) AS a
WHERE NOT EXISTS
(
SELECT * 
FROM [Analyst_db].[dbo].[appt_slot_util] d
WHERE (
        a.start_date=d.start_date and
        a.Loc=d.Loc and
        a.Spec=d.Spec
        )
)

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Я узнал это. Я включил слишком много значений в группу

0 голосов
/ 17 мая 2018

Похоже, вы пропустили группу в вашем подзапросе:

INSERT INTO [Analyst_db].[dbo].[appt_slot_util]
SELECT 
a.start_date,
a.Loc,a.Spec,
a.slots_avail,
a.slots_booked,
a.slots_open
FROM
(
SELECT asl.start_date
        , SUBSTRING(lm.location_name,6,2) as Loc
        , SUBSTRING(lm.location_name,9,3) as Spec
        , SUM(asl.overbook_limit) as slots_avail
        , SUM(asl.appt_count) as slots_booked
        , SUM(asl.overbook_limit)-SUM(asl.appt_count) as slots_open
FROM nextgen.ngprod.dbo.appt_slots asl
    JOIN nextgen.ngprod.dbo.location_mstr lm ON lm.location_id = asl.location_id
group by asl.start_date
        , SUBSTRING(lm.location_name,6,2) 
        , SUBSTRING(lm.location_name,9,3)  
) AS a
WHERE NOT EXISTS
(
SELECT * 
FROM [Analyst_db].[dbo].[appt_slot_util] d
WHERE (
        a.start_date=d.start_date and
        a.Loc=d.Loc and
        a.Spec=d.Spec
        )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...