No SSMS e SQLSERVER a estrutura foi diferente
CREATE TABLE Faturamentodiario(
Dia Date,
FaturamentoTotal Decimal(10,2)
)
---- **** chatgpt **** ----
CREATE OR ALTER TRIGGER CalculaFaturamentoDiario
ON ItensPedidos
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
;WITH Faturamento AS (
SELECT
CAST(p.DataHoraPedido AS DATE) AS Dia,
SUM(i.PrecoUnitario) AS Total
FROM INSERTED i
JOIN Pedidos p
ON p.ID = i.IDPedido
GROUP BY CAST(p.DataHoraPedido AS DATE)
)
MERGE FaturamentoDiario AS fd
USING Faturamento AS f
ON fd.Dia = f.Dia
WHEN MATCHED THEN
UPDATE
SET fd.FaturamentoTotal = fd.FaturamentoTotal + f.Total
WHEN NOT MATCHED THEN
INSERT (Dia, FaturamentoTotal)
VALUES (f.Dia, f.Total);
END;
GO
INSERT INTO Pedidos(ID, IDCliente, DataHoraPedido, Status)
VALUES (451, 27, '2023-10-07 14:30:00', 'Em Andamento');
INSERT INTO ItensPedidos(IDPedido, IDProduto, Quantidade, PrecoUnitario)
VALUES
(451, 14, 1, 6.0),
(451, 13, 1, 7.0);
Nenhum retorno para
SELECT * FROM Faturamentodiario
WHERE DIA = '2023-10-07
Para o comando
SELECT * FROM Faturamentodiario
WHERE DIA = '2023-07-10'`
Contudo, com o comando
SELECT ip.precounitario, ip.idpedido, CAST(p.DataHoraPedido as Date) FROM ItensPedidos ip
join pedidos p
on ip.idpedido = p.id
WHERE CAST(p.DataHoraPedido as Date) = '2023-07-10'
SELECT sum(ip.precounitario), CAST(p.DataHoraPedido as Date) FROM ItensPedidos ip
join pedidos p
on ip.idpedido = p.id
GROUP BY CAST(p.DataHoraPedido as Date)
HAVING CAST(p.DataHoraPedido as Date) = '2023-07-10'
Caso minha linha de raciocínio esteja certa, o que posso fazer para verificar onde esta a inconsistência?