As instrucoes INSERT, DELETE e UPDATE ganharam uma nova clausula, OUTPUT . Ex: --declarando uma tabela que ira receber os dadosDECLARE @Deletados AS TABLE (materia INT, nome_artita VARCHAR(30)) --executando o codigo e abastacendo a tabelaDELETE aluna OUTPUT DELETED.materia, DELETED.nome_artista INTO @DeletadosWHERE materia = 6 RANK e DENSE_RANK atribuem o mesmo valor para as colunas que possuem o mesmo valor dentro da ordem qe foi estabelecida.Ex: SELECT Vendedor, Produto, Quantidade, ROW_NUMBER() OVER(ORDER BY Quantidade ASC) AS Numero, RANK() OVER(ORDER BY Quantidade asc) AS Rank, DENSE_RANK() OVER(ORDER BY Quantidade ASC) AS DenseRankFROM Analise_Vendas ORDER BY Quantidade asc PARTITION BY - Outra opcao da sintaxe basica que se chama PARTITION BY, quefunciona mais ou menos como o group by, definindo por qualcriterio nosso ROW_NUMBER devera ser ressetado.Ex: select ROW_NUMBER() over ( PARTITION BY Produto ORDER BY Quantidade Desc ) as Numero, Vendedor, Produto, Quantidade from Analise_Vendas PAGINACAO - Uma outra ideia para utlizar esta funcao seria para criar uma paginacao para nossa Query, podendo utiliza-la em alguma pagina na Web. Ex: DECLARE @NumeroDaPagina AS INT, @TamanhoDaPagina AS INT SET @NumeroDaPagina = 2 SET @TamanhoDaPagina = 5 SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Quantidade DESC ) AS Numero, Vendedor, Produto , Quantidade, Telefonemas FROM Analise_Vendas) AS V WHERE NumeroBETWEEN (@NumeroDaPagina-1)* @TamanhoDaPagina+1 AND@NumeroDaPagina*@TamanhoDaPagina ORDER BY Quantidade DESC,Telefonemas Esse eu perdi um tempinho procurando pois nao sabia como funcionava, mas achei um tutorial da microsoft e fiquei besta da facilidade:Ex.--proc exemplocreate procedure Teste_RetornaStatus@contratoId as intas begin select contratoStatus from contrato where contratoId = @contratoIdend--executando a procdeclare @status as int--armazenando o retorno da procedure (simples)execute @status = Teste_RetornaStatus @contratoId = 12pronto , o retorno esta na variavel @status. Para armazenar o select de uma stored procedure, no sql 2005 eh um pouco diferente.precisa seguir alguns passos:- precisa ter um linked server configurado.- chamar a rotina que retornara o conteudo da proc.configurando o linked server:exec sp_addlinkedserver@server = '[nome que vc dara ao link]',@srvproduct = '',@provider = 'SQLNCLI',--FICA ASSIM MESMO@provstr = 'DRIVER={SQLServer};SERVER=[IP DO SEU SERVIDOR ONDE ESTA A SUA BASE];UID=[LOGIN];PWD=[SENHA];' feito isso teremos o link configurado. agora basta chamar a rotina assim: select * from openquery([nome dado ao link],'execute [Teste_RetornoProc]) com isso pode-se inserir o retorno em qualquer tabela, tanto temporaria ou variavel, ou mesmo tabela fisica. Row_number Utilizando a funcao row_number podemos nao so numerar as linhasde uma tabela como tambem fazer essa numeracao em uma ordemespecifica, diferente da ordem na qual as linhas serao exibidas.Ex: -- no SQL 2005 select ROW_NUMBER() over ( ORDER BY Quantidade desc ) as Numero, Vendedor, Produto, Quantidade, Telefonemas from Analise_Vendas O Top foi inserido no SQL 7.0, porem esta clausula no SQL 2005 traz algumas alteracoes. Permite, por exemplo, o numero da percentagem a ser retornada em um SELECT. E pode tambem ser utilizada tambem para INSERT, UPDATE e DELETE.Ex: -- Retorna Linha 1 e Linha 2SELECT TOP(2) * FROM alunos--Atualiza Linha 1 e Linha 2 para 'S'UPDATE TOP(2) alunosSET Col1='S--Apaga as 2 primeiras linhas onde 'S' foi apagadoDELETE TOP(2) alunos A funcao PIVOT transforma o ajuste de linhas para colunas. Ex: --TRANSFORMANDO LINHAS EM COLUNAS NO SQL SERVER 2000select Produto, sum(case