values multiple into mysql sql null group-by insert-into

multiple - MySQL Cómo asignar un valor nulo a las columnas que no coinciden al usar Agrupar por



mysql insert into select (2)

Prueba esto:

insert into SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue) select Name, if(count(distinct Location)=1, Location, NULL), Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue) from MovieTheaterTbl group by Name

Tengo la siguiente tabla de MovieTheaterTbl:

Name Location Date TicketRevenue SnackRevenue BeverageRevenue AMC Alpine St. 8/14 100 80 60 Atlas Main St. 8/19 300 150 100 Atlas Lincoln Rd. 8/19 50 50 40

Me gustaría insertar estos datos en una tabla llamada SummaryTbl, que debe mostrar la suma de las columnas de Ingresos, agrupadas por el nombre de la sala de cine. Si alguna de las otras columnas no es idéntica para las filas con el mismo nombre (por ejemplo, la ubicación difiere en las 2 entradas de Atlas), me gustaría que se muestre un valor nulo en ese punto. Esto es lo que me gustaría que se parezca a SummaryTbl:

Name Location Date TicketRevenue SnackRevenue BeverageRevenue AMC Alpine St. 8/14 100 80 60 Atlas 8/19 350 200 140

Aquí está el código que estoy usando actualmente:

insert into SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue) select Name,Location,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue) from MovieTheaterTbl group by Name

Esto agrupa los datos juntos muy bien, pero no inserta un valor NULL en el campo Ubicación cuando una única sala de cine tiene múltiples ubicaciones. ¿Podría alguien explicar cómo hacer esto? ¡Gracias!


Puede usar union adn teniendo .. having count (*)> 1 insert null else else insert the location

insert into SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue) select Name, NULL,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue) from MovieTheaterTbl group by Name HAVING COUNT(*) >1 and count(location) >1 UNION select Name, Location,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue) from MovieTheaterTbl group by Name HAVING COUNT(*) =1 AND count(location) = 1