rss
twitter
facebook

Home

Mostrar mensagens com a etiqueta SQL. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta SQL. Mostrar todas as mensagens

How to get last string value

declare @lastString varchar(50);
SELECT @lastString = Field FROM [Table] WHERE Field='2015,1289,613431220'

SELECT SUBSTRING(@lastString , LEN(@lastString) -  CHARINDEX(',',REVERSE(@lastString)) + 2  , LEN(@s)  )


Read More

Howe to make random top X rows sql

SELECT TOP [Number]  [Field] FROM [TableName]
ORDER BY NEWID()


Read More

How to convert DateTime to Hour / Minute / Second

SELECT
CONVERT(VARCHAR(8) , GETDATE() , 108) AS HourMinuteSecond,
CONVERT(VARCHAR(5) , GETDATE() , 108) AS HourMinute

Read More

How to make UPDATE SELECT

UPDATE [TableName]
SET [Field]= BB.[Field]
                  FROM [TableName] BB
                                        INNER JOIN [TableName] AA ON BB.[Field] = AA.Field
Read More

How to make SQL Backup All DataBases

DECLARE @Baksql VARCHAR(8000)
DECLARE @BackupFolder VARCHAR(100)
DECLARE @BackupFile VARCHAR(100)
DECLARE @BAK_PATH VARCHAR(4000)
DEclare @BackupDate varchar(100)
-- Setting value of  backup date and folder of the backup
SET @BackupDate =  REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR,GETDATE(),120),'-',''),':',''),' ','_') -- 20110517_182551
SET @BackupFolder = 'C:\Backups\'
SET @Baksql = ''
-- Declaring cursor
DECLARE c_bakup CURSOR FAST_FORWARD READ_ONLY FOR 
SELECT NAME FROM SYS.DATABASES
WHERE state_desc = 'ONLINE' -- Consider databases which are online
AND database_id > 4  -- Exluding system databases

-- Opening and fetching next values from sursor
OPEN c_bakup
FETCH NEXT FROM c_bakup INTO @BackupFile
WHILE @@FETCH_STATUS = 0
BEGIN
SET @BAK_PATH = @BackupFolder + @BackupFile
-- Creating dynamic script for every databases backup
SET @Baksql = 'BACKUP DATABASE ['+@BackupFile+'] TO DISK = '''+@BAK_PATH+'_FullBackup_'+@BackupDate+'.bak'' WITH INIT;'
-- Executing dynamic query
PRINT (@Baksql)
EXEC(@Baksql)
-- Opening and fetching next values from sursor
FETCH NEXT FROM c_bakup INTO @BackupFile
END
-- Closing and Deallocating cursor
CLOSE c_bakup
DEALLOCATE c_bakup
Read More

How to make Upper first CHAR Word

UPDATE [TableName]
SET = UPPER(LEFT(LOWER(), 1)) + SUBSTRING(LOWER(), 2, LEN())
Read More

SQL multi facts

declare
@A int = 1 ,@B int = 3 , @C int =20 , @D int =16

INSERTINTO @temp(A,B,C,D)
SELECT *
FROM
(
SELECT 1 As A, 2 AS B, 3 AS C, 4 AS D
UNION SELECT 1 As A, 2 AS B, null AS C, null AS D
UNION SELECT 1 As A, 2 AS B, 4 AS C, 5 AS D
UNION SELECT 1 As A, 3 AS B, 2 AS C, null AS D
UNION SELECT 1 As A, 3 AS B, 2 AS C, 7 AS D
UNION select 1 As A, 3 AS B, null AS C, null AS D
) A

SELECT
TOP 1 * FROM

@temp
WHERE
(A = @A AND B=@B AND C=@C AND D=@D) OR
(A = @A AND B=@B AND C=@C AND D IS NULL) OR
(A = @A AND B=@B AND C IS NULL AND D IS NULL) OR
(A = @A AND B IS NULL AND C IS NULL AND D IS NULL)
orderby D DESC,C DESC,B DESC,A DESC

Read More

SQL generate Years <=100

WITH ListYear AS
     ( SELECT 1913 AS YEAR
             UNION ALL
        SELECT lyear.YEAR + 1 AS YEAR
        FROM ListYear lyear
        WHERE lyear.YEAR + 1 <= YEAR(GetDate())
     )
SELECT YEAR FROM ListYear ORDER BY YEAR DESC;

Read More

SQL add 0 with Integer

DECLARE @DONSEQ INTEGER SET @DONSEQ =1 SELECT RIGHT('00'+ CONVERT(VARCHAR,@DONSEQ),3) AS NUM
Read More

INSERT INTO

INSERT INTO TableName
(TableName.CLIENT,
TableName.ENTITY,
TableName.CREATEDBY,
TableName.CREATEDATE,
TableName.UPDATEDBY,
TableName.UPDATEDBY,
TableName.INTERVINIENTTYPEID,
TableName.INTERVINIENTSRELATIONSHIPID,
TableName.[ClientNumber],
TableName.[EntityNumber])

SELECT TableName.[Id], TableName5.[Id],
'7',GETDATE(),'7',GETDATE(),
TableName2.[Id], TableName3.[Id],
TableName4.LTNCLI,TableName4.LTNTIT
FROM
[DataBaseName].[dbo].[TableName4]
LEFT JOIN DataBaseName.dbo.TableName ON LTRIM(RTRIM(TableName4.[LTNCLI])) = LTRIM(RTRIM(TableName.[ClientNumber]))
LEFT JOIN DataBaseName.dbo.TableName5 ON LTRIM(RTRIM(TableName4.[LTNTIT])) = LTRIM(RTRIM(TableName5.[EntityNumber]))
LEFT JOIN DataBaseName.dbo.TableName2 ON TableName4.[LTRCLI] = TableName2.[ExternalCode]
LEFT JOIN DataBaseName.dbo.TableName3 ON TableName4.[LTRCPE] = TableName3.[Description]
AND TableName3.[isActive] = 1
Read More

Duplicated records

SELECT "Key and/or Foreign Key" ,COUNT(1)
FROM "TableName"
GROUP BY "Key and/or Foreign Key"
HAVING COUNT(1) > 1
Read More

Import Excel to SQL

BULK INSERT 'tablename ' FROM 'path filename.csv'

WITH (FIELDTERMINATOR = ';');
Read More

RESTORE DATABASE YourDatabaseName

RESTORE DATABASE YourDatabaseName
FROM DISK = N'(path to your BAK file)'
WITH FILE = 1,
MOVE N'(your DB name)' TO N'(your SQL path)database.MDF',
MOVE N'(your DB name)_LOG' TO N'(your SQL path)database_LOG.LDF',
NOUNLOAD,
REPLACE,
STATS = 10
GO

By
http://stackoverflow.com/questions/6217679/create-restore-database-from-backup-sql-server-express
Read More

CONVERT and CAST SQL

DECLARE @value decimal (5, 2)
SET @value = 193.57
SELECT CAST(CAST(@value AS varbinary(20)) AS decimal(10,5)) +6.43

OR another

SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @value ))
Read More

Nulldate Filter Outsystems/SQL

((@dt_inicio = @Nulldate and @dt_fim = @Nulldate) OR
((CAST(FLOOR(CAST( {EMAIL}.[Created_DateTime] as FLOAT)) AS DATETIME)) >= @dt_inicio AND
(CAST(FLOOR(CAST( {EMAIL}.[Created_DateTime] as FLOAT)) AS DATETIME)) <= @dt_fim)) AND
({EMAIL}.[Subject] LIKE ('%' + @SearchKeyword + '%') OR {EMAIL}.[Message] LIKE ('%' + @SearchKeyword + '%') OR @SearchKeyword = NULL)
Read More

You Can view how to size your tables

DECLARE
@max INT,
@min INT,
@owner NVARCHAR(256),
@table_name NVARCHAR(256),
@sql NVARCHAR(4000)

DECLARE @table TABLE(
ident INT IDENTITY(1,1) PRIMARY KEY,
owner_name NVARCHAR(256),
table_name NVARCHAR(256))

IF (SELECT OBJECT_ID('tempdb..#results')) IS NOT NULL
BEGIN
DROP TABLE #results
END

CREATE TABLE #results(
ident INT IDENTITY(1,1) PRIMARY KEY, --Will be used to update the owner.
table_name NVARCHAR(256),
owner_name NVARCHAR(256),
table_rows INT,
reserved_space NVARCHAR(55),
data_space NVARCHAR(55),
index_space NVARCHAR(55),
unused_space NVARCHAR(55))

INSERT @table(owner_name, table_name)
SELECT
su.name,
so.name
FROM
sysobjects so
INNER JOIN sysusers su ON so.uid = su.uid
WHERE
so.xtype = 'U'

SELECT
@min = 1,
@max = (SELECT MAX(ident) FROM @table)

WHILE @min <= @max
BEGIN

SELECT
@owner = owner_name,
@table_name = table_name
FROM
@table
WHERE
ident = @min

SELECT @sql = 'EXEC sp_spaceused ''[' + @owner + '].[' + @table_name + ']'''
INSERT #results(table_name, table_rows, reserved_space, data_space, index_space, unused_space)
EXEC (@sql)

UPDATE #results
SET owner_name = @owner
WHERE ident = (SELECT MAX(ident) FROM #results)

SELECT @min = @min + 1
END

SELECT * FROM #results
Read More

Table TEMP for BIG Tables(ROWS)

SELECT
    {TRANSACTION}.[Id],{TRANSACTION}.[PostDate],
    {TRANSACTION}.[Iban], {TRANSACTION}.[Amount]
INTO #TEMP
FROM {TRANSACTION}
WHERE {TRANSACTION}.[Nconta]= <variable>



SELECT #TEMP.*
FROM #TEMP


Read More

Expert Query - JOIN's


--1.  Liste todos os jogadores de uma determinada equipa e a respectiva
--          posição onde jogam habitualmente, que estão inscritos na época 09/10 da 1a Liga portuguesa.

   
SELECT     dbo.Empregado.idEmpregado, dbo.Empregado.nome, dbo.Posicao.descricao
FROM         dbo.Inscrito INNER JOIN
                      dbo.Empregado ON dbo.Inscrito.idEmpregado = dbo.Empregado.idEmpregado INNER JOIN
                      dbo.Posicao ON dbo.Empregado.idPosicao = dbo.Posicao.idPosicao
WHERE     (dbo.Inscrito.fifaTeamCode = 'pt-benfica') AND (YEAR(dbo.Inscrito.dataInicio) = 2009)




--2.  Qual o número de golos que o jogador Liedson, do Sporting, marcou até à data,
--          em cada edição da ia Liga portuguesa.



SELECT     YEAR(dbo.Jogou.dataInicio) AS Edicao, COUNT(*) AS Golos
FROM         dbo.Estatistica INNER JOIN
                      dbo.Jogou ON dbo.Estatistica.idEmpregado = dbo.Jogou.idEmpregado AND dbo.Estatistica.dataJogo = dbo.Jogou.dataJogo AND
                      dbo.Estatistica.equipa1 = dbo.Jogou.equipa1
GROUP BY dbo.Estatistica.idEmpregado, dbo.Estatistica.idFacto, YEAR(dbo.Jogou.dataInicio)
HAVING      (dbo.Estatistica.idEmpregado = 'SPO04')-- Liedson
                   AND (dbo.Estatistica.idFacto = 8) -- Golos






--3.  De que países são as Selecções com a média de idade de jogadores mais baixa,
--          na Edição 2006 do Campeonato do Mundo. Devem ser seleccionadas todas as selecções
--          que se situarem no 1° e 2° lugar da média mais baixa.

SELECT     TOP (2) WITH TIES dbo.Edicao.fifaTeamCode, AVG(YEAR(GETDATE()) - YEAR(dbo.Empregado.dataNascimento)) AS MédiaIdades
FROM         dbo.Empregado INNER JOIN
                      dbo.Inscrito ON dbo.Empregado.idEmpregado = dbo.Inscrito.idEmpregado INNER JOIN
                      dbo.Edicao ON dbo.Inscrito.fifaTeamCode = dbo.Edicao.fifaTeamCode AND dbo.Inscrito.idCompeticao = dbo.Edicao.idCompeticao AND
                      dbo.Inscrito.dataInicio = dbo.Edicao.dataInicio
WHERE     (YEAR(dbo.Edicao.dataInicio) = 2010)-- Ano
GROUP BY dbo.Edicao.fifaTeamCode, dbo.Edicao.idCompeticao
HAVING      (dbo.Edicao.idCompeticao = 'MUNDL')
ORDER BY MédiaIdades

--4.  Quem foi/foram o(s) jogadore(s), e de que país(es), que ganharam maior número de
--          um determinado tipo de prémio em edições do Campeonato do Mundo, até à data.




SELECT     TOP (1) WITH TIES dbo.Premio.idEmpregado, dbo.Empregado.nome, dbo.Premio.fifaTeamCode, dbo.TipoPremio.descricao AS Premio, COUNT(dbo.Premio.id)
                      AS NumPremios
FROM         dbo.Premio LEFT OUTER JOIN
                      dbo.TipoPremio ON dbo.Premio.idTipoPremio = dbo.TipoPremio.idTipoPremio LEFT OUTER JOIN
                      dbo.Empregado ON dbo.Premio.idEmpregado = dbo.Empregado.idEmpregado
GROUP BY dbo.Premio.idTipoPremio, dbo.Premio.fifaTeamCode, dbo.Premio.idEmpregado, dbo.TipoPremio.descricao, dbo.Premio.idCompeticao, dbo.Empregado.nome
HAVING      (dbo.Premio.idCompeticao = 'MUNDL') AND (dbo.Premio.idTipoPremio = 2)
ORDER BY NumPremios DESC


--5.  Qual o país (ou países), que tem mais jogadores dessa nacionalidade, inscritos
--          na época 09/10 da 1a Liga portuguesa.






SELECT     TOP (1) WITH TIES dbo.Pais.nome, COUNT(*) AS Count
FROM         dbo.Inscrito INNER JOIN
                      dbo.Empregado ON dbo.Inscrito.idEmpregado = dbo.Empregado.idEmpregado INNER JOIN
                      dbo.Localidade ON dbo.Localidade.idLocalidade = dbo.Empregado.idLocalidade INNER JOIN
                      dbo.Pais ON dbo.Localidade.ISOalpha2Id = dbo.Pais.ISOalpha2Id
WHERE     (YEAR(dbo.Inscrito.dataInicio) = 2009) AND (dbo.Inscrito.idCompeticao = '1LGPT')
GROUP BY dbo.Pais.nome
ORDER BY dbo.Pais.nome DESC





--6.  Para cada uma das classificações, 1° lugar, 2° lugar e 3° lugar, mostre o número
--          de vezes que um determinado país se classificou nesse lugar, na competição do Campeonato do Mundo.

SELECT     fifaTeamCode, classificacao, COUNT(*) AS Vezes
FROM         dbo.Classificacao
WHERE     (idCompeticao = 'MUNDL') AND (ultimaEtapa = 's')
GROUP BY   fifaTeamCode, classificacao
HAVING      (classificacao IN ('1', '2', '3')) AND (fifaTeamCode = 'espanha')

--7.  Liste todos os jogos da época 09/10 da 1a Liga portuguesa em que o Benfica joga em casa.

SELECT     dataJogo, equipa1, equipa2
FROM         dbo.Jogo
WHERE     (equipa1 = 'PT-BENFICA') AND (equipaCasa = '1') AND (idCompeticao = '1LGPT') AND (YEAR(dataInicio) = 2009)



--8.  Qual o número de internacionalizações (jogos em que jogou), do jogador Ricardo Sá Pinto.

SELECT     COUNT(*) AS Internacionalizações
FROM         dbo.Jogou
GROUP BY  idEmpregado, idCompeticao
HAVING      (idCompeticao = 'MUNDL') AND (idEmpregado = 'SPO10') --Jogador Sá Pinto


--9.  Qual a equipa (jogadores e treinador), mais cara e o respectivo valor, do
--          campeonato da Premiership (1a Liga Inglesa), na época de 09/10.
--          Note que pode acontecer ser mais de uma.

SELECT     TOP (1) WITH TIES dbo.Equipa.fifaTeamCode, Equipa_1.descricao, SUM(dbo.Empregado.salario) AS Valor
FROM         dbo.Edicao INNER JOIN
                      dbo.Equipa ON dbo.Edicao.fifaTeamCode = dbo.Equipa.fifaTeamCode INNER JOIN
                      dbo.Contrato ON dbo.Equipa.fifaTeamCode = dbo.Contrato.fifaTeamCode INNER JOIN
                      dbo.Empregado ON dbo.Contrato.idEmpregado = dbo.Empregado.idEmpregado INNER JOIN
                      dbo.Equipa AS Equipa_1 ON dbo.Edicao.fifaTeamCode = Equipa_1.fifaTeamCode
GROUP BY dbo.Edicao.idCompeticao, dbo.Equipa.fifaTeamCode, YEAR(dbo.Edicao.dataInicio), Equipa_1.descricao
HAVING      (dbo.Edicao.idCompeticao = '1LGUK') AND (YEAR(dbo.Edicao.dataInicio) = 2009)
ORDER BY Valor DESC


--10. Liste todos os jogadores do Sporting de Braga que foram inscritos na época 09/10 da 1a Liga portuguesa
--          e nunca jogaram nenhum jogo.
                       
SELECT     dbo.Inscrito.idEmpregado, dbo.Empregado.nome
FROM         dbo.Inscrito INNER JOIN
                      dbo.Empregado ON dbo.Inscrito.idEmpregado = dbo.Empregado.idEmpregado
WHERE     (dbo.Inscrito.idEmpregado NOT IN
                          (SELECT     idEmpregado
                            FROM          dbo.Jogou
                            WHERE      (fifaTeamCode = 'PT-BRAGA') AND (YEAR(dataInicio) = 2009) AND (idCompeticao = '1LGPT')))
                           
           AND (dbo.Inscrito.fifaTeamCode = 'PT-BRAGA') AND (YEAR(dbo.Inscrito.dataInicio) = 2009) AND (dbo.Inscrito.idCompeticao = '1LGPT')
                       
                                           
--11. Qual o jogo e respectiva competição (note que pode acontecer ser mais de um),
--          onde ocorreram mais cartões vermelhos nos primeiros 90 minutos de jogo.

SELECT     TOP (1) WITH TIES dbo.Jogo.idCompeticao, dbo.Competicao.descricao, dbo.Estatistica.dataJogo, dbo.Estatistica.equipa1, dbo.Jogo.equipa2,
           COUNT(dbo.Estatistica.equipa1) AS CartoesVermelhos
FROM         dbo.Estatistica INNER JOIN
                      dbo.Jogou ON dbo.Estatistica.idEmpregado = dbo.Jogou.idEmpregado
                                                     AND dbo.Estatistica.dataJogo = dbo.Jogou.dataJogo
                                                     AND dbo.Estatistica.equipa1 = dbo.Jogou.equipa1 INNER JOIN
                      dbo.Jogo ON dbo.Jogou.dataJogo = dbo.Jogo.dataJogo
                                                     AND dbo.Jogou.equipa1 = dbo.Jogo.equipa1 INNER JOIN
                      dbo.Competicao ON dbo.Jogou.idCompeticao = dbo.Competicao.idCompeticao
GROUP BY dbo.Estatistica.idFacto, dbo.Estatistica.equipa1, dbo.Estatistica.valor, dbo.Estatistica.dataJogo, dbo.Jogo.equipa2, dbo.Jogo.idCompeticao, dbo.Competicao.descricao
HAVING  (dbo.Estatistica.idFacto = 6) AND (dbo.Estatistica.valor < 90)
ORDER BY CartoesVermelhos DESC

--12. Liste os nomes dos guarda-redes e respectivo país pelo qual jogam na edição de 2010
--          do campeonato do mundo

SELECT DISTINCT dbo.Jogou.idEmpregado, dbo.Empregado.nome, dbo.Pais.nome AS Pais
FROM         dbo.Edicao INNER JOIN
                      dbo.Jogou ON dbo.Edicao.dataInicio = dbo.Jogou.dataInicio AND dbo.Edicao.idCompeticao = dbo.Jogou.idCompeticao AND
                      dbo.Edicao.fifaTeamCode = dbo.Jogou.fifaTeamCode INNER JOIN
                      dbo.Empregado ON dbo.Jogou.idEmpregado = dbo.Empregado.idEmpregado INNER JOIN
                      dbo.Equipa ON dbo.Edicao.fifaTeamCode = dbo.Equipa.fifaTeamCode INNER JOIN
                      dbo.Pais ON dbo.Equipa.ISOalpha2Id = dbo.Pais.ISOalpha2Id
WHERE     (YEAR(dbo.Edicao.dataInicio) = 2010) AND (dbo.Edicao.idCompeticao = 'MUNDL') AND (dbo.Jogou.idPosicao = 'GD')


--13. Que equipas já foram treinadas pelo treinador José Mourinho até à data.

SELECT DISTINCT dbo.Equipa.fifaTeamCode, dbo.Equipa.descricao
FROM         dbo.Inscrito LEFT OUTER JOIN
                      dbo.Equipa ON dbo.Inscrito.fifaTeamCode = dbo.Equipa.fifaTeamCode
WHERE     (dbo.Inscrito.idEmpregado = 'BEN12')

--14. Quantas vezes o jogador Fábio Coentrão foi suplente na época 09/10 da 1a Liga portuguesa.

SELECT     COUNT(*) AS Suplente
FROM         dbo.Jogo INNER JOIN
                      dbo.Inscrito ON dbo.Jogo.equipa1 = dbo.Inscrito.fifaTeamCode AND dbo.Jogo.idCompeticao = dbo.Inscrito.idCompeticao AND
                      dbo.Jogo.dataInicio = dbo.Inscrito.dataInicio
WHERE     (dbo.Jogo.dataJogo NOT IN
                          (SELECT     Jogo_1.dataJogo
                            FROM          dbo.Jogo AS Jogo_1 INNER JOIN
                                                   dbo.Jogou ON Jogo_1.dataInicio = dbo.Jogou.dataInicio AND Jogo_1.idCompeticao = dbo.Jogou.idCompeticao AND
                                                   Jogo_1.dataJogo = dbo.Jogou.dataJogo AND Jogo_1.equipa1 = dbo.Jogou.equipa1 INNER JOIN
                                                   dbo.Competicao ON Jogo_1.idCompeticao = dbo.Competicao.idCompeticao
                            WHERE      (Jogo_1.idCompeticao = '1LGPT') AND (dbo.Jogou.idEmpregado = 'BEN06')))
GROUP BY YEAR(dbo.Inscrito.dataInicio), dbo.Inscrito.idEmpregado
HAVING      (YEAR(dbo.Inscrito.dataInicio) = 2009) AND (dbo.Inscrito.idEmpregado = 'BEN06')



--15. Qual o melhor marcador na época 09/10 da 1a Liga portuguesa, até à data.
--          Note que pode acontecer ser mais de um.

SELECT     TOP (1) WITH TIES COUNT(*) AS Golos, dbo.Estatistica.idEmpregado, dbo.Empregado.nome
FROM         dbo.Estatistica INNER JOIN
                      dbo.Jogou ON dbo.Estatistica.idEmpregado = dbo.Jogou.idEmpregado AND dbo.Estatistica.dataJogo = dbo.Jogou.dataJogo AND
                      dbo.Estatistica.equipa1 = dbo.Jogou.equipa1 INNER JOIN
                      dbo.Empregado ON dbo.Estatistica.idEmpregado = dbo.Empregado.idEmpregado
WHERE     (dbo.Estatistica.idFacto = 8)
GROUP BY dbo.Estatistica.idEmpregado, dbo.Jogou.dataInicio, dbo.Empregado.nome, dbo.Jogou.idCompeticao
HAVING      (YEAR(dbo.Jogou.dataInicio) = 2009) AND (dbo.Jogou.idCompeticao = '1LGPT')
ORDER BY Golos DESC



--16. Qual o jogador do Sporting de Braga que jogou mais minutos de jogo na época 09/10 da 1a Liga portuguesa,
--          até à data. Note que pode acontecer ser mais de um.

SELECT     TOP (1) WITH TIES dbo.Estatistica.idEmpregado, dbo.Empregado.nome,
--SOMA((Saida/Fim do jogo)-(Entrada/inicio de Jogo))
SUM((CASE WHEN dbo.Estatistica.idFacto = 10  THEN dbo.Estatistica.valor ELSE 0 END)
    - (CASE WHEN dbo.Estatistica.idFacto = 9 THEN dbo.Estatistica.valor ELSE 0 END)) AS Tempo
FROM         dbo.Equipa INNER JOIN
                      dbo.Jogou ON dbo.Equipa.fifaTeamCode = dbo.Jogou.fifaTeamCode INNER JOIN
                      dbo.Empregado ON dbo.Jogou.idEmpregado = dbo.Empregado.idEmpregado RIGHT OUTER JOIN
                      dbo.Estatistica ON dbo.Jogou.idEmpregado = dbo.Estatistica.idEmpregado AND dbo.Jogou.dataJogo = dbo.Estatistica.dataJogo AND
                      dbo.Jogou.equipa1 = dbo.Estatistica.equipa1
WHERE     (dbo.Equipa.fifaTeamCode = 'PT-BRAGA') AND (YEAR(dbo.Jogou.dataInicio) = 2009) AND (dbo.Jogou.idCompeticao = '1LGPT')
GROUP BY dbo.Estatistica.idEmpregado, dbo.Empregado.nome
ORDER BY Tempo DESC


--17. Quais os países que nunca participaram em nenhuma edição do campeonato do mundo.

SELECT     dbo.Pais.ISOalpha2Id, dbo.Pais.nome
FROM       dbo.Equipa INNER JOIN
                      dbo.Edicao ON dbo.Equipa.fifaTeamCode = dbo.Edicao.fifaTeamCode RIGHT OUTER JOIN
                      dbo.Pais ON dbo.Equipa.ISOalpha2Id = dbo.Pais.ISOalpha2Id
WHERE     (dbo.Edicao.fifaTeamCode IS NULL)

--18. Em que edições (ano) do Campeonato do Mundo participou uma dada equipa.

SELECT     YEAR(dbo.Edicao.dataInicio) AS Edição
FROM         dbo.Equipa INNER JOIN
                      dbo.Edicao ON dbo.Equipa.fifaTeamCode = dbo.Edicao.fifaTeamCode INNER JOIN
                      dbo.Pais ON dbo.Equipa.ISOalpha2Id = dbo.Pais.ISOalpha2Id INNER JOIN
                      dbo.Competicao ON dbo.Edicao.idCompeticao = dbo.Competicao.idCompeticao
WHERE     (dbo.Edicao.idCompeticao = 'MUNDL') AND (dbo.Equipa.ISOalpha2Id = 'IT')

--19. Quem foi o melhor marcador de todos os tempos em edições do Campeonato do Mundo.

SELECT     TOP (1) WITH TIES YEAR(dbo.Edicao.dataInicio) AS Ediçao, COUNT(*) AS Golos, dbo.Empregado.idEmpregado, dbo.Empregado.nome
FROM         dbo.Empregado INNER JOIN
                      dbo.Estatistica ON dbo.Empregado.idEmpregado = dbo.Estatistica.idEmpregado LEFT OUTER JOIN
                      dbo.Edicao INNER JOIN
                      dbo.Jogou ON dbo.Edicao.fifaTeamCode = dbo.Jogou.fifaTeamCode AND dbo.Edicao.idCompeticao = dbo.Jogou.idCompeticao AND
                      dbo.Edicao.dataInicio = dbo.Jogou.dataInicio INNER JOIN
                      dbo.Competicao ON dbo.Edicao.idCompeticao = dbo.Competicao.idCompeticao ON dbo.Estatistica.idEmpregado = dbo.Jogou.idEmpregado AND
                      dbo.Estatistica.dataJogo = dbo.Jogou.dataJogo AND dbo.Estatistica.equipa1 = dbo.Jogou.equipa1
WHERE     (dbo.Edicao.idCompeticao = 'MUNDL')
GROUP BY dbo.Estatistica.idFacto, dbo.Empregado.idEmpregado, YEAR(dbo.Edicao.dataInicio), dbo.Empregado.nome
HAVING      (dbo.Estatistica.idFacto = 8)
ORDER BY Golos DESC

--20. Quem são os jogadores que jogam (estão inscritos) no campeonato português de 09/10 e
--estão também inscritos para integrar a equipa representará Portugal no Campeonato do Mundo de 2010.

SELECT     dbo.Empregado.idEmpregado, dbo.Empregado.nome
FROM         dbo.Inscrito INNER JOIN
                      dbo.Competicao ON dbo.Inscrito.idCompeticao = dbo.Competicao.idCompeticao INNER JOIN
                      dbo.Empregado ON dbo.Inscrito.idEmpregado = dbo.Empregado.idEmpregado
WHERE     (YEAR(dbo.Inscrito.dataInicio) = 2010) AND (dbo.Empregado.idEmpregado IN
                          (SELECT     Inscrito_1.idEmpregado
                            FROM          dbo.Inscrito AS Inscrito_1 INNER JOIN
                                                   dbo.Competicao AS Competicao_1 ON Inscrito_1.idCompeticao = Competicao_1.idCompeticao
                            WHERE      (Competicao_1.descricao = N'1ª Liga Portuguesa') AND (YEAR(Inscrito_1.dataInicio) = 2009))) AND (dbo.Inscrito.idCompeticao = 'MUNDL')




Read More
 
Powered by Blogger