Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BEGIN TRY
- /*2.1*/
- DECLARE @Fornecedor VARCHAR(50), @Total MONEY, @NFacturas INT
- SET @Fornecedor = 'Patinter'
- SET @Total = 14600.50
- SET @NFacturas = 14
- SELECT @Fornecedor AS [Fornecedor], @Total AS [Total], @NFacturas AS [NFactura]
- PRINT 'Fornecedor: ' + @Fornecedor + ' Total: ' + CONVERT(VARCHAR,@Total) + ' NFacturas: ' + CONVERT(VARCHAR,@NFacturas)
- /*2.2*/
- DECLARE @Media FLOAT, @Menos INT, @Mais INT
- SET @Media = (SELECT AVG(TotalFactura) FROM Facturas)
- SET @Menos = (SELECT COUNT(*) FROM Facturas WHERE TotalFactura < @Media)
- SET @Mais = (SELECT COUNT(*) FROM Facturas WHERE TotalFactura > @Media)
- PRINT 'Valor médio de todas as Facturas: ' + CONVERT(VARCHAR,@Media) + '.'
- PRINT 'Nº Facturas com valor menor que a média: ' + CONVERT(VARCHAR,@Menos) + '.'
- PRINT 'Nº Facturas com valor maior que a média: ' + CONVERT(VARCHAR,@Mais) + '.'
- /*2.3*/
- DECLARE @Dispend FLOAT, @ValMed FLOAT, @Num INT, @UltFact VARCHAR(50), @DataUltFact DATE, @identificador INT = 122
- SET @Dispend = (SELECT MAX(TotalFactura) FROM Facturas WHERE Fornecedor = @identificador)
- SET @ValMed = (SELECT AVG(TotalFactura) FROM Facturas WHERE Fornecedor = @identificador)
- SET @Num = (SELECT COUNT(*) FROM Facturas WHERE Fornecedor = @identificador)
- SET @UltFact = (SELECT TOP(1) NúmeroFactura FROM Facturas WHERE Fornecedor = @identificador ORDER BY DataFactura DESC)
- SET @DataUltFact = (SELECT TOP(1) DataFactura FROM Facturas WHERE Fornecedor = @identificador ORDER BY DataFactura DESC)
- PRINT 'Factura mais dispendiosa: ' + CONVERT(VARCHAR,@Dispend) + '.'
- PRINT 'Valor médio de todas as Facturas: ' + CONVERT(VARCHAR,@ValMed) + '.'
- PRINT 'Número de facturas emitidas: ' + CONVERT(VARCHAR,@Num) + '.'
- PRINT 'Número da última factura: ' + @UltFact + '.'
- PRINT 'Data da última factura: ' + CONVERT(VARCHAR,@DataUltFact) + '.'
- /*2.4*/
- DECLARE @latabela TABLE
- (NúmeroFactura VARCHAR(50),
- Fornecedor INT,
- DataFactura DATE,
- TotalFactura FLOAT)
- INSERT @latabela
- SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura FROM Facturas ORDER BY TotalFactura DESC
- SELECT * FROM @latabela
- /*2.5*/
- /*SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura INTO #Templatabela
- FROM Facturas ORDER BY TotalFactura DESC
- SELECT * FROM #Templatabela*/
- /*2.6*/
- IF OBJECT_ID('tempdb..#Templatabela') IS NOT NULL
- DROP TABLE tempdb.#Templatabela
- SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura INTO #Templatabela
- FROM Facturas ORDER BY TotalFactura DESC
- SELECT * FROM #Templatabela
- /*2.7*/
- DECLARE @MenorDívida money, @MaiorDívida money
- DECLARE @MenorDataDívida smalldatetime
- DECLARE @MaiorDataDívida smalldatetime
- DECLARE @VarIDFornecedor INT = 1, @TotalDiv INT
- SELECT @MenorDívida = MIN(TotalFactura - Pagamento - Crédito),
- @MaiorDívida = MAX(TotalFactura - Pagamento - Crédito),
- @MenorDataDívida = MIN(DataVencimentoFactura),
- @MaiorDataDívida = MAX(DataVencimentoFactura),
- @TotalDiv = COUNT(*)
- FROM Facturas
- WHERE TotalFactura - Pagamento - Crédito > 0 AND Fornecedor = @VarIDFornecedor
- IF @MenorDataDívida < GETDATE()
- BEGIN
- PRINT CONVERT(VARCHAR,@TotalDiv) + ' Facturas por liquidar em atraso relativamente à data de pagamento!'
- PRINT 'Datas em dívida de' + CONVERT(VARCHAR,@MenorDataDívida,1) +
- ' até ' + CONVERT(VARCHAR,@MaiorDataDívida,1) + '.'
- PRINT 'Montante em dívida desde ' + CONVERT(VARCHAR,@MenorDívida,1)
- + ' a ' + CONVERT(VARCHAR,@MaiorDívida,1) + '.'
- END
- ELSE --@MenorDataDívida >= GETDATE()
- PRINT 'Não existem facturas com atrasos de pagamento'
- END TRY
- BEGIN CATCH
- PRINT 'FALHA: Erro a processar o script.'
- SELECT
- ERROR_NUMBER() AS [Número do erro],
- ERROR_MESSAGE() AS [Mensagem de erro]
- END CATCH
- /*2.9*/
- DECLARE @sqlCommand VARCHAR(1000)
- DECLARE @NomeTabela VARCHAR(50)
- SET @NomeTabela = 'Facturas'
- /*SET @NomeTabela = 'Fornecedor'*/
- SET @sqlCommand = 'SELECT TOP 10 * FROM ' + @NomeTabela
- EXEC (@sqlCommand)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement