Añadiendo una columna calculada utilizando tablas diferentes en SQL
Soy nuevo en SQL, así que por favor se paciente conmigo.
Estoy tratando de agregar una columna calculada llamada InvoiceAmount
a mi tabla CompanyInvoice
.
Mi tabla actualmente tiene las siguientes columnas:
CREATE TABLE CompanyInvoice
(
InvoiceID CHAR(5) NOT NULL,
CompanyAccountID CHAR(5) NOT NULL
CONSTRAINT FK_CompanyInvoice_CompanyAccount
FOREIGN KEY REFERENCES CompanyAccount(CompanyAccountID)
ON UPDATE CASCADE,
CompanyID CHAR(5) NOT NULL
CONSTRAINT FK_CompanyInvoice_ProductionCompany
FOREIGN KEY REFERENCES ProductionCompany(CompanyID),
BookingID CHAR(5) NOT NULL
CONSTRAINT FK_CompanyInvoice_EventBooking
FOREIGN KEY REFERENCES EventBooking (BookingID),
TheatreID CHAR(5) NOT NULL
CONSTRAINT FK_CompanyInvoice_Theatre
FOREIGN KEY REFERENCES Theatre(TheatreID)
ON UPDATE CASCADE
);
Me gustaría agregar una nueva columna que calcule el monto de la factura; este monto se calcula en función de la duración del evento (la columna EventDuration
se encuentra en una tabla llamada Event
) y el TheatreID
, por ejemplo, si TheatreID=1
, entonces EventDuration x 300
, si TheatreID=2
, entonces EventDuration x 1000
.
Muchas gracias.
davy.ai
Para agregar una columna calculada
InvoiceAmount
a tu tablaCompanyInvoice
, puedes usar la siguiente declaración SQL:Esto agrega una nueva columna no nula llamada
InvoiceAmount
del tipo de datoDECIMAL
.Para calcular el monto de la factura para cada fila basado en
EventDuration
yTheatreID
, puedes utilizar una sentenciaCASE
en una consultaUPDATE
:Esto establece el valor de
InvoiceAmount
para cada fila según el valor deTheatreID
yEventDuration
.Ten en cuenta que necesitarás unir la tabla
CompanyInvoice
con la tablaEventBooking
para obtener el valor deEventDuration
para cada fila.Además, asegúrate de probar tu consulta antes de ejecutarla en tu base de datos de producción y realiza una copia de seguridad de tus datos antes de realizar cualquier cambio.