|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rastrack Novato
Registrado: Segunda-Feira, 27 de Julho de 2015 Mensagens: 70
|
Enviada: Sex Set 01, 2017 1:05 am Assunto: Query do MySQL não roda no SQL Server. |
|
|
Pessoal, tenho essa query usada em um banco MySQL, estou tentando de tudo adaptar ela pro SQL Server mas não tá dando certo, pois o SQL Server me força a agrupar todas as colunas selecionadas. Alguém me ajuda a adaptar essa query no SQL Server, ou implementar uma similar?
Código: |
SELECT c.name,c.name_fantasy,CONCAT(v.title,' ',v.plaque) AS title,sc.number,sc.iccid,o.title AS carrier,r.sn,r.lat,r.lng,r.date_db,r.date_gps,TIMESTAMPDIFF(HOUR,r.date_db,CURRENT_TIMESTAMP()) as diferenca,r.volt_main,r.speed,r.ign,r.sat_fix,r.sat
FROM clients c
JOIN vehicles v
ON c.id = v.clients_id
JOIN installations i
ON v.id = i.vehicles_id
JOIN simcards sc
ON sc.id = i.simcards_id
JOIN operators o
ON o.id = sc.operators_id
JOIN trackers t
ON i.trackers_id = t.id
JOIN registers r
ON t.cod = r.sn
JOIN (
SELECT rr.sn, MAX(rr.id) AS id FROM registers rr GROUP BY sn
) AS L2 ON r.sn = L2.sn AND r.id = L2.id
GROUP BY r.sn
HAVING diferenca >= p_time;
|
Qualqur ajuda é sempre bem vinda e abraços a todos. |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Sex Set 01, 2017 10:26 am Assunto: |
|
|
Concordo com o Imex, mas percebi que o seu group by contém apenas um campo, enquanto que ele deveria conter todos.
faz um teste com esse script:
Código: | SELECT c.name,
c.name_fantasy,
CONCAT(v.title, ' ', v.plaque) AS title,
sc.number,
sc.iccid,
o.title AS carrier,
r.sn,
r.lat,
r.lng,
r.date_db,
r.date_gps,
TIMESTAMPDIFF(HOUR,r.date_db,CURRENT_TIMESTAMP()) as diferenca,
r.volt_main,
r.speed,
r.ign,
r.sat_fix,
r.sat
FROM clients c
JOIN vehicles v
ON c.id = v.clients_id
JOIN installations i
ON v.id = i.vehicles_id
JOIN simcards sc
ON sc.id = i.simcards_id
JOIN operators o
ON o.id = sc.operators_id
JOIN trackers t
ON i.trackers_id = t.id
JOIN registers r
ON t.cod = r.sn
JOIN (SELECT rr.sn,
MAX(rr.id) AS id
FROM registers rr
GROUP BY sn) AS L2
ON r.sn = L2.sn AND r.id = L2.id
GROUP BY c.name,
c.name_fantasy,
v.title,
v.plaque,
sc.number,
sc.iccid,
o.title,
r.sn,
r.lat,
r.lng,
r.date_db,
r.date_gps,
r.volt_main,
r.speed,
r.ign,
r.sat_fix,
r.sat
HAVING diferenca >= p_time; |
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|