Mudanças entre as edições de "Usuário:Nelson:Dicas sql"
(→Algumas Queries em Sybase) |
(→Selecionando a última linha de uma consulta) |
||
(7 edições intermediárias de um usuário não apresentadas) | |||
Linha 1: | Linha 1: | ||
− | + | ==== Algumas Queries em Sybase ==== | |
+ | |||
+ | =====Usando getdate() e datepart() ===== | ||
+ | |||
+ | SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(mi,-5)) ORDER BY nome | ||
+ | |||
+ | De uma tabela TABELANOME onde atr4 contem valor no formato de data do Sybase e atr3 contem valor em String, mas | ||
+ | não são pedidas no select para que sejam mostradas no SELECT. O comando retorna as linhas da tabela nome com as colunas chave, nome, atr1, atr2,telef em que atr3 é igual a 'valor' e que a data guardada em atr4 seja um valor da data/hora atual menos 5 minutos. | ||
+ | |||
+ | SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(mm,-2)) ORDER BY nome | ||
+ | |||
+ | A mesma coisa mas para uma diferenca de data de 1 mes. | ||
+ | |||
+ | SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(hh,-10)) ORDER BY nome | ||
+ | |||
+ | A mesma coisa mas para 10 horas de diferenca. | ||
+ | |||
+ | SELECT dateadd(mi, -10, getdate()) | ||
+ | |||
+ | Retorna valor de hora atual menos minutos | ||
+ | |||
+ | ===== Ordenando as linhas retornadas ===== | ||
+ | |||
+ | SELECT chave,nome,atr1,atr2,atr3,atr4,atr5 FROM dbo.TABELANOME WHERE atr1 LIKE 'valor1' OR atr1 LIKE 'valor2' OR atr1 LIKE 'valor3' ORDER BY atr4,atr1,nome | ||
+ | |||
+ | Retorna as linhas em que atr1 pode ter valor1 ou valor2 ou valor3 ordenando primeiro, pela coluna atr4, seguido de atr1, e finalmente nas faixas onde há repetidas de atr1, ordena os nomes em ordem alfabética. | ||
+ | |||
+ | SELECT comtimestamp,data1,data2,data3,data4,atr1,atr2 FROM dbo.TABELANOME WHERE atr3 LIKE 'valor1' ORDER BY comtimestamp DESC,data1,atr1,atr2 ASC | ||
+ | |||
+ | ===== Selecionando a última linha de uma consulta ===== | ||
+ | ;Versão 12.5.3 e acima | ||
+ | select top 1 * from nometabela order by coluna_chave desc | ||
+ | ;Versão anteriores a 12.5.3 | ||
+ | Set rowcount 1 | ||
+ | Select * from nometabela order by coluna_chave desc | ||
+ | Set rowcount 0 | ||
+ | |||
+ | ;Outras sugestões | ||
+ | select * from <tablename> where <key> (select max(<key>) from <tablename> ) |
Edição atual tal como às 15h09min de 9 de abril de 2010
Conteúdo[ocultar] |
[editar] Algumas Queries em Sybase
[editar] Usando getdate() e datepart()
SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(mi,-5)) ORDER BY nome
De uma tabela TABELANOME onde atr4 contem valor no formato de data do Sybase e atr3 contem valor em String, mas não são pedidas no select para que sejam mostradas no SELECT. O comando retorna as linhas da tabela nome com as colunas chave, nome, atr1, atr2,telef em que atr3 é igual a 'valor' e que a data guardada em atr4 seja um valor da data/hora atual menos 5 minutos.
SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(mm,-2)) ORDER BY nome
A mesma coisa mas para uma diferenca de data de 1 mes.
SELECT chave,nome,atr1,atr2,telef FROM dbo.TABELANOME WHERE atr3 LIKE 'valor' AND atr4 > (getdate() - datepart(hh,-10)) ORDER BY nome
A mesma coisa mas para 10 horas de diferenca.
SELECT dateadd(mi, -10, getdate())
Retorna valor de hora atual menos minutos
[editar] Ordenando as linhas retornadas
SELECT chave,nome,atr1,atr2,atr3,atr4,atr5 FROM dbo.TABELANOME WHERE atr1 LIKE 'valor1' OR atr1 LIKE 'valor2' OR atr1 LIKE 'valor3' ORDER BY atr4,atr1,nome
Retorna as linhas em que atr1 pode ter valor1 ou valor2 ou valor3 ordenando primeiro, pela coluna atr4, seguido de atr1, e finalmente nas faixas onde há repetidas de atr1, ordena os nomes em ordem alfabética.
SELECT comtimestamp,data1,data2,data3,data4,atr1,atr2 FROM dbo.TABELANOME WHERE atr3 LIKE 'valor1' ORDER BY comtimestamp DESC,data1,atr1,atr2 ASC
[editar] Selecionando a última linha de uma consulta
- Versão 12.5.3 e acima
select top 1 * from nometabela order by coluna_chave desc
- Versão anteriores a 12.5.3
Set rowcount 1 Select * from nometabela order by coluna_chave desc Set rowcount 0
- Outras sugestões
select * from <tablename> where <key> (select max(<key>) from <tablename> )