Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save guidani/3e0b3453366f7b296c8dd7330d1171a6 to your computer and use it in GitHub Desktop.
Save guidani/3e0b3453366f7b296c8dd7330d1171a6 to your computer and use it in GitHub Desktop.
queryCriacaoTabelasFuncoesViewsProcedures.sql
-- Tabela Clientes
CREATE TABLE Clientes (
Id_cliente INT PRIMARY KEY IDENTITY(1,1),
Nome_Cliente VARCHAR(100) NOT NULL,
Numero_Cartao VARCHAR(16) NOT NULL UNIQUE
);
-- Tabela Transacoes
CREATE TABLE Transacoes (
Id INT PRIMARY KEY IDENTITY(1,1),
Id_Transacao VARCHAR(255),
Numero_Cartao VARCHAR(16) NOT NULL,
Data_Transacao DATETIME NOT NULL,
Valor_Transacao DECIMAL(10, 2) NOT NULL,
Descricao VARCHAR(MAX),
);
-- Stored Procedure para calcular o total de transa��es em um per�odo
CREATE PROCEDURE sp_CalculaTotalTransacoes
@Data_Inicial DATETIME,
@Data_Final DATETIME
AS
BEGIN
SELECT
Numero_Cartao,
SUM(Valor_Transacao) AS Valor_Total,
COUNT(Id_Transacao) AS Quantidade_Transacoes
FROM Transacoes
WHERE Data_Transacao BETWEEN @Data_Inicial AND @Data_Final
GROUP BY Numero_Cartao;
END;
-- Fun��o para determinar a categoria da transa��o
CREATE FUNCTION fn_CategoriaTransacao (@Valor_Transacao DECIMAL(10, 2))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @Categoria VARCHAR(50);
IF @Valor_Transacao > 1000
SET @Categoria = 'Alta';
ELSE IF @Valor_Transacao BETWEEN 500 AND 1000
SET @Categoria = 'M�dia';
ELSE
SET @Categoria = 'Baixa';
RETURN @Categoria;
END;
-- View combinando Clientes e Transacoes, utilizando a fun��o para a categoria
CREATE VIEW vw_ClientesTransacoes
AS
SELECT
C.Nome_Cliente,
T.Numero_Cartao,
T.Valor_Transacao,
T.Data_Transacao,
dbo.fn_CategoriaTransacao(T.Valor_Transacao) AS Categoria
FROM Transacoes T
JOIN Clientes C ON T.Numero_Cartao = C.Numero_Cartao;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment