SQL - Laid combinaison de GROUPE PAR et se rejoignent
J'ai une table avec des données semblables au suivant:
[ID], [État], [foo], [DateCreated], [DateUpdated]
Plus je travaille sur ce, la plus laide my SQL, qui me dit que je suis probablement fait quelque chose de mal. Ce que je veux, c'est une liste unique de chaque État aussi longtemps que foo est toujours le même pour que l'État (si toto n'est pas la même pour tous les enregistrements dans cet État, je ne veux pas que l'État à tous). Aussi, je tiens à FUSIONNER DateCreated et DateUpdated et veulent le maximum de valeur pour l'État.
Donc, compte tenu des données:
[ID], [State], [foo], [DateCreated], [DateUpdated]
1, MA, data1, 05/29/2012, 06/02/2012
2, MA, data1, 05/29/2012, 06/03/2012
3, RI, data2, 05/29/2012, NULL
4, RI, data3, 05/29/2012, NULL
5, NH, data4, 05/29/2012, NULL
6, NH, data4, 05/29/2012, 06/05/2012
Je voudrais seulement ces résultats:
[State], [foo], [LastUpdated]
MA, data1, 06/03/2012
NH, data4, 06/05/2012
Ce qui est la façon la plus élégante pour obtenir ce que je suis après?
vous n'êtes autorisé à utiliser les vues?
Je peux créer des vues.
"Plus je travaille sur ce, la plus laide my SQL, qui me dit que je suis probablement fait quelque chose de mal." Pourquoi vous sentez-vous de cette façon? MySQL est la même langue que vous fait faire un produit cartésien juste pour trouver l'unicité, après tout...
Je peux créer des vues.
"Plus je travaille sur ce, la plus laide my SQL, qui me dit que je suis probablement fait quelque chose de mal." Pourquoi vous sentez-vous de cette façon? MySQL est la même langue que vous fait faire un produit cartésien juste pour trouver l'unicité, après tout...
OriginalL'auteur Scott K | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Un simple Groupe, avec des requêtes imbriquées devrait suffire:
Pour quelqu'un avec la même question, il est intéressant de noter que MAX() et MIN() les fonctions d'ignorer les valeurs Null. Donc MIN(foo) doit être au minimum(COALESCER(foo, ")) ou quelque chose de similaire.
OriginalL'auteur Frank Schmitt
Un autre:
http://sqlfiddle.com/#!6/fd219/1
SQLFiddle n'ai pas reconnu l'retardé NOUS les formats de date.
Juste curieux, mais que voulez-vous dire SQL Violon ne pas NOUS reconnaître les formats de date? En quoi étiez-vous de la difficulté?
SQLFiddle est un excellent site. Je n'ai pas utilisé avant. Quelle bonne idée lorsque vous n'avez pas la possibilité de créer votre propre base de données.
ah, oui, la date de l'analyse logique est un peu bancale - je suis reporter pour le navigateur de la date de moteur d'analyse, et ils semblent être à l'état sauvage sur ce qu'ils feront lorsqu'ils sont passés d'une chaîne donnée. Ennuyantes. Dont je vous trouve - tout comme garder un œil sur la façon dont les gens utilisent le site! Ne vous inquiétez pas, je ne me contente pas de rechercher de possibles critiques - je upvote trop LOL!
OriginalL'auteur biziclop
Pas élégant, mais pour vous, pauvres SQL 2000 âmes:
Pourquoi sont imbriquées
SELECT
s sont nécessaires?ils ne sont pas vraiment, c'est juste ce que j'ai trouvé à l'époque. Votre montage est, fondamentalement, ma sélection interne avec un
max(Foo)
, qui est ce que j'étais en tournage pour.J'ai eu des problèmes lors de foo est NULL. ALos j'ai toto1, foo2, etc et les valeurs Null est vraiment devenu un problème 🙁 Frank réponse du travailleur de mieux dans cette situation.
Vous n'avez pas mentionné Foo est
NULL
, mais pas de soucis, j'aurais pris ça en compteOriginalL'auteur LittleBobbyTables
En supposant que vous utilisez SQL Server 2005 ou >
Essayez ceci:
OriginalL'auteur Chandu
Essayez ceci:
OriginalL'auteur Pooja smithi