Advertisement
Kimossab

SIBD - S12.2

May 4th, 2015
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.93 KB | None | 0 0
  1. BEGIN TRY
  2.  
  3. /*2.1*/
  4. DECLARE @Fornecedor VARCHAR(50), @Total MONEY, @NFacturas INT
  5. SET @Fornecedor = 'Patinter'
  6. SET @Total = 14600.50
  7. SET @NFacturas = 14
  8.  
  9. SELECT @Fornecedor AS [Fornecedor], @Total AS [Total], @NFacturas AS [NFactura]
  10.  
  11. PRINT 'Fornecedor: ' + @Fornecedor + ' Total: ' + CONVERT(VARCHAR,@Total) + ' NFacturas: ' + CONVERT(VARCHAR,@NFacturas)
  12.  
  13. /*2.2*/
  14. DECLARE @Media FLOAT, @Menos INT, @Mais INT
  15.  
  16. SET @Media = (SELECT AVG(TotalFactura) FROM Facturas)
  17. SET @Menos = (SELECT COUNT(*) FROM Facturas WHERE TotalFactura < @Media)
  18. SET @Mais = (SELECT COUNT(*) FROM Facturas WHERE TotalFactura > @Media)
  19.  
  20. PRINT 'Valor médio de todas as Facturas: ' + CONVERT(VARCHAR,@Media) + '.'
  21. PRINT 'Nº Facturas com valor menor que a média: ' + CONVERT(VARCHAR,@Menos) + '.'
  22. PRINT 'Nº Facturas com valor maior que a média: ' + CONVERT(VARCHAR,@Mais) + '.'
  23.  
  24. /*2.3*/
  25. DECLARE @Dispend FLOAT, @ValMed FLOAT, @Num INT, @UltFact VARCHAR(50), @DataUltFact DATE, @identificador INT = 122
  26.  
  27. SET @Dispend = (SELECT MAX(TotalFactura) FROM Facturas WHERE Fornecedor = @identificador)
  28. SET @ValMed = (SELECT AVG(TotalFactura) FROM Facturas WHERE Fornecedor = @identificador)
  29. SET @Num = (SELECT COUNT(*) FROM Facturas WHERE Fornecedor = @identificador)
  30. SET @UltFact = (SELECT TOP(1) NúmeroFactura FROM Facturas WHERE Fornecedor = @identificador ORDER BY DataFactura DESC)
  31. SET @DataUltFact = (SELECT TOP(1) DataFactura FROM Facturas WHERE Fornecedor = @identificador ORDER BY DataFactura DESC)
  32.  
  33. PRINT 'Factura mais dispendiosa: ' + CONVERT(VARCHAR,@Dispend) + '.'
  34. PRINT 'Valor médio de todas as Facturas: ' + CONVERT(VARCHAR,@ValMed) + '.'
  35. PRINT 'Número de facturas emitidas: ' + CONVERT(VARCHAR,@Num) + '.'
  36. PRINT 'Número da última factura: ' + @UltFact + '.'
  37. PRINT 'Data da última factura: ' + CONVERT(VARCHAR,@DataUltFact) + '.'
  38.  
  39. /*2.4*/
  40. DECLARE @latabela TABLE
  41.     (NúmeroFactura VARCHAR(50),
  42.     Fornecedor INT,
  43.     DataFactura DATE,
  44.     TotalFactura FLOAT)
  45.  
  46. INSERT @latabela
  47. SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura FROM Facturas ORDER BY TotalFactura DESC
  48.  
  49. SELECT * FROM @latabela
  50.  
  51. /*2.5*/
  52. /*SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura INTO #Templatabela
  53. FROM Facturas ORDER BY TotalFactura DESC
  54.  
  55. SELECT * FROM #Templatabela*/
  56.  
  57. /*2.6*/
  58. IF OBJECT_ID('tempdb..#Templatabela') IS NOT NULL
  59. DROP TABLE tempdb.#Templatabela
  60.  
  61. SELECT TOP(5) NúmeroFactura, Fornecedor, DataFactura, TotalFactura INTO #Templatabela
  62. FROM Facturas ORDER BY TotalFactura DESC
  63.  
  64. SELECT * FROM #Templatabela
  65.  
  66. /*2.7*/
  67. DECLARE @MenorDívida money, @MaiorDívida money
  68. DECLARE @MenorDataDívida smalldatetime
  69. DECLARE @MaiorDataDívida smalldatetime
  70. DECLARE @VarIDFornecedor INT = 1, @TotalDiv INT
  71.  
  72. SELECT @MenorDívida = MIN(TotalFactura - Pagamento - Crédito),
  73.         @MaiorDívida = MAX(TotalFactura - Pagamento - Crédito),
  74.         @MenorDataDívida = MIN(DataVencimentoFactura),
  75.         @MaiorDataDívida = MAX(DataVencimentoFactura),
  76.         @TotalDiv = COUNT(*)
  77. FROM Facturas
  78. WHERE TotalFactura - Pagamento - Crédito > 0 AND Fornecedor = @VarIDFornecedor
  79.  
  80. IF @MenorDataDívida < GETDATE()
  81.     BEGIN
  82.         PRINT CONVERT(VARCHAR,@TotalDiv) + ' Facturas por liquidar em atraso relativamente à data de pagamento!'
  83.         PRINT 'Datas em dívida de' + CONVERT(VARCHAR,@MenorDataDívida,1) +
  84.                     ' até ' + CONVERT(VARCHAR,@MaiorDataDívida,1) + '.'
  85.         PRINT 'Montante em dívida desde ' + CONVERT(VARCHAR,@MenorDívida,1)
  86.                     + ' a ' + CONVERT(VARCHAR,@MaiorDívida,1) + '.'
  87.     END
  88. ELSE --@MenorDataDívida >= GETDATE()
  89.     PRINT 'Não existem facturas com atrasos de pagamento'
  90. END TRY
  91. BEGIN CATCH
  92.     PRINT 'FALHA: Erro a processar o script.'
  93.     SELECT
  94.         ERROR_NUMBER() AS [Número do erro],
  95.         ERROR_MESSAGE() AS [Mensagem de erro]
  96. END CATCH
  97.  
  98.  
  99.  
  100.  
  101. /*2.9*/
  102. DECLARE @sqlCommand VARCHAR(1000)
  103. DECLARE @NomeTabela VARCHAR(50)
  104. SET @NomeTabela = 'Facturas'
  105. /*SET @NomeTabela = 'Fornecedor'*/
  106. SET @sqlCommand = 'SELECT TOP 10 * FROM ' + @NomeTabela
  107. EXEC (@sqlCommand)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement