SELECT INATIVOS
Bom dia!
Prezados colegas,
Preciso fazer um select e ainda não encontrei a melhor forma de executá-lo. Tenho uma tabela conforme a apresentada abaixo.
id_Cliente Nome Evento Data
1111 Jose R401 27/06/2014 00:04
1112 Joaquim R401 27/06/2014 00:04
1113 Maria R401 27/06/2014 00:04
1114 João R401 01/03/2014 00:04
1115 Mario R401 23/02/2014 00:04
1116 Paulo R401 01/06/2011 00:04
O que preciso é de um select que me mostre quem são os clientes que não tiveram evento R401 nos últimos 10 dias, pois isso significa que os mesmos estão inativos. No exemplo da tabela acima, os últimos três seriam mostrados.
Desde já agradeço.
Prezados colegas,
Preciso fazer um select e ainda não encontrei a melhor forma de executá-lo. Tenho uma tabela conforme a apresentada abaixo.
id_Cliente Nome Evento Data
1111 Jose R401 27/06/2014 00:04
1112 Joaquim R401 27/06/2014 00:04
1113 Maria R401 27/06/2014 00:04
1114 João R401 01/03/2014 00:04
1115 Mario R401 23/02/2014 00:04
1116 Paulo R401 01/06/2011 00:04
O que preciso é de um select que me mostre quem são os clientes que não tiveram evento R401 nos últimos 10 dias, pois isso significa que os mesmos estão inativos. No exemplo da tabela acima, os últimos três seriam mostrados.
Desde já agradeço.
Não testei mas da uma procurada no google, tem bastante sql..
SELECT * FROM tabela WHERE NOT (Evento = [ô]R401[ô]) BETWEEN DATA ([ô]2003/01/01[ô], [ô]yyyy/mm/dd[ô])
AND DATA ([ô]2003/12/31[ô], [ô]yyyy/mm/dd[ô]);
SELECT * FROM tabela WHERE NOT (Evento = [ô]R401[ô]) BETWEEN DATA ([ô]2003/01/01[ô], [ô]yyyy/mm/dd[ô])
AND DATA ([ô]2003/12/31[ô], [ô]yyyy/mm/dd[ô]);
SELECT * FROM TABELA WHERE EVENTO = [ô]R401[ô] AND CAST(DATA AS DATE) >= [ô]2014-06-18[ô]
A ideia é essa!
No VB.NET ara subtrair os 10 dias faça o seguinte!
Exemplo
Dim DataAtual As Date = Date.Now
Dim DataAux As Date
DataAux = DataAtual.AddDays(-10)
MessageBox.Show(DataAux.ToString([Ô]dd/MM/yyyy[Ô]))
A ideia é essa!
No VB.NET ara subtrair os 10 dias faça o seguinte!
Exemplo
Dim DataAtual As Date = Date.Now
Dim DataAux As Date
DataAux = DataAtual.AddDays(-10)
MessageBox.Show(DataAux.ToString([Ô]dd/MM/yyyy[Ô]))
Boa noite!
Consegui da seguinte forma...
Fiz algumas pesquisas e vi que talvez a melhor opção seria pegar o ID da linha caso a tabela tenha auto incremento, e essa tem, assim usei um distinct com max nessa coluna e depois juntei com um JOIN.
Obrigado a todos que colaboraram, colo acima o código para ajudar os demais colegas em uma necessidade semelhante.
Consegui da seguinte forma...
SELECT DISTINCT CEN.ID_CENTRAL AS Conta, CEN.RAZAO, H1.CD_EVENTO AS Evento,
CAST(H1.DT_RECEBIDO AS SMALLDATETIME) AS Data
FROM HISTORICO_ARME AS H1
INNER JOIN (SELECT CD_CLIENTE, MAX(CD_HISTORICO_ARME) AS COD
FROM HISTORICO_ARME
GROUP BY CD_CLIENTE) AS H2 ON H1.CD_HISTORICO_ARME = COD
INNER JOIN dbCENTRAL AS CEN ON CEN.CD_CLIENTE = H1.CD_CLIENTE
WHERE CEN.FG_ATIVO = [ô]1[ô]
AND H1.DT_RECEBIDO < GETDATE() -10
ORDER BY CAST(H1.DT_RECEBIDO AS SMALLDATETIME) DESC
Fiz algumas pesquisas e vi que talvez a melhor opção seria pegar o ID da linha caso a tabela tenha auto incremento, e essa tem, assim usei um distinct com max nessa coluna e depois juntei com um JOIN.
Obrigado a todos que colaboraram, colo acima o código para ajudar os demais colegas em uma necessidade semelhante.
Boa tarde.
Conforme postei acima, consegui fazer a querry agora falta jogar o -10 em um combobox no C#
AND H1.DT_RECEBIDO < GETDATE() -10
Quero ter um combobox onde o usuário pode escolher -5, -10 ou -15 por exemplo.
Conforme postei acima, consegui fazer a querry agora falta jogar o -10 em um combobox no C#
AND H1.DT_RECEBIDO < GETDATE() -10
Quero ter um combobox onde o usuário pode escolher -5, -10 ou -15 por exemplo.
Bom dia.
Alguem pode me ajudar com essa situação? Tenho esse pedaço da QUERRY abaixo:
AND H1.DT_RECEBIDO < GETDATE() -10
Quero ter no C# Forms as opções em um combobox onde o usuário pode escolher -5, -10 ou -15 por exemplo.
Eu pensei em simplesmente trocar o -10 por um paramentro dentro do SQL tipo GETDATE() @data, mas quando o usuário escolher a opção o C# vai trocar o @data por [ô]-10[ô] exemplo, e as aspas farão com que o select retorne erro.
Alguem pode me ajudar com essa situação? Tenho esse pedaço da QUERRY abaixo:
AND H1.DT_RECEBIDO < GETDATE() -10
Quero ter no C# Forms as opções em um combobox onde o usuário pode escolher -5, -10 ou -15 por exemplo.
Eu pensei em simplesmente trocar o -10 por um paramentro dentro do SQL tipo GETDATE() @data, mas quando o usuário escolher a opção o C# vai trocar o @data por [ô]-10[ô] exemplo, e as aspas farão com que o select retorne erro.
Alguem?
string vSQL = [Ô]SELECT * FROM TABELA WHERE CEN.FG_ATIVO = [ô]1[ô] AND H1.DT_RECEBIDO < (GETDATE() @DATA)[Ô];
vSQL = vSQL.Replace([Ô]@DATA[Ô], ComboBox.SelectedValue);
Mas você pode trabalhar com parametros na hora de fazer a instrução SQL. Pesquise por select com parametros SQL Server
vSQL = vSQL.Replace([Ô]@DATA[Ô], ComboBox.SelectedValue);
Mas você pode trabalhar com parametros na hora de fazer a instrução SQL. Pesquise por select com parametros SQL Server
Bom dia Rogério,
Para trazer a data em menos 10 dias utilize o Between com DateAdd, veja o exemplo abaixo:
Agora no C#, é só trocar o [Ô]-10[Ô] pelo valor da ComboBox
Para trazer a data em menos 10 dias utilize o Between com DateAdd, veja o exemplo abaixo:
SELECT * FROM TABELA AS H1 WHERE H1.DT_RECEBIDO BETWEEN DATEADD(DAY,-10, GETDATE()) AND GETDATE()
Agora no C#, é só trocar o [Ô]-10[Ô] pelo valor da ComboBox
Ola Rodrigo e Filman,
O problema é que quando substituo o @data no C# ele troca @data por [ô]-10[ô] e essas aspas vão dar erro no select.
Abraços.
O problema é que quando substituo o @data no C# ele troca @data por [ô]-10[ô] e essas aspas vão dar erro no select.
Abraços.
Rodrigo,
Quando eu troco...
=>
Por
=>
A querry fica rodando infinitamente e não conclui nunca. O detalhe é que essa tabela recebe eventos constantemente.
Quando eu troco...
=>
AND H1.DT_RECEBIDO < GETDATE() -10
Por
=>
AND H1.DT_RECEBIDO BETWEEN DATEADD(DAY,-10, GETDATE()) AND GETDATE()
A querry fica rodando infinitamente e não conclui nunca. O detalhe é que essa tabela recebe eventos constantemente.
Tópico encerrado , respostas não são mais permitidas