SQL Pivot sur les dates de la colonne?
Je suis assez nouveau dans SQL mais croyez-moi, j'ai cherché de l'aide avant de poster cette.
J'ai une requête qui renvoie une liste de personnes affectées à des emplois, aussi les emplois ont une durée variable et les gens qui sont affectés à ces postes de travail sont de longueurs différentes.
Ce que je suis en train de faire est de convertir ce qui est une liste de semblables documents, avec la seule variable qui change, c'est la date, et d'une façon pivot de ces données ainsi que les dates deviennent en-têtes de colonne et les lignes représentent un BOOL oui/non.
C'est les données que je suis de retour actuellement. JSON codé
{"results":[{"role":"Vision Supervisor","familyname":"Unsworth","givenname":"Simon","skill":"10","level":"Telegenic Staff","id":"664","date":"2013-03-27"},{"role":"Vision Supervisor","familyname":"Unsworth","givenname":"Simon","skill":"10","level":"Telegenic Staff","id":"664","date":"2013-03-26"},{"role":"Vision Supervisor","familyname":"Unsworth","givenname":"Simon","skill":"10","level":"Telegenic Staff","id":"664","date":"2013-03-25"},{"role":"Vision Supervisor","familyname":"Unsworth","givenname":"Simon","skill":"10","level":"Telegenic Staff","id":"664","date":"2013-03-24"}]}
et ce que je voudrais obtenir le retour est
{"results":[{"role":"Vision Supervisor","familyname":"Unsworth","givenname":"Simon","skill":"10","level":"Telegenic Staff","id":"664","2013-03-27":"YES","2013-03-26":"YES","2013-03-25":"YES","2013-03-24":"YES"}]}
Je suis sûr que c'est une sorte de PIVOT de la requête, mais je ne peux pas le faire fonctionner.
Grâce
Veille........C'est un peu compliqué d'une requête de jointure.
Je suis à la base à l'aide de php avec l'accès à SQL server à distance, et la mise en forme de JSON pour afficher sur une application iPhone. Je'cant de voir vraiment un moyen facile de faire un dump de la base de données qu'il ne soit pas géré par moi.
OriginalL'auteur Simon Unsworth | 2012-12-20
Vous devez vous connecter pour publier un commentaire.
Si vous allez être en cours d'exécution de cette requête dans SQL Server, vous pouvez utiliser le
PIVOT
fonction:Voir SQL jouer avec la Démo
Ou vous pouvez utiliser une fonction d'agrégation et d'un
CASE
déclaration:Voir SQL jouer avec la Démo
À la fois donner le résultat:
Ci-dessus fonctionne très bien si vous connaissez les valeurs de transposer, mais si vous n'avez pas, alors vous pouvez utiliser le sql dynamique similaire à ceci:
Voir SQL jouer avec la Démo
voir mon montage, j'ai ajouté une dynamique version sql de la requête
Je dois faire quelque chose de similaire, bientôt, je vais essayer de le SQL dynamique. Cela fonctionne sur tous les serveurs ou avez-vous besoin de quelque chose de spécial de l'insertion?
Ce type de code fonctionne sur sql server.
OriginalL'auteur Taryn