0
votes

Conversion de la requête en Syntaxe SQL Server

J'ai de l'aide de Chegg et la plupart des réponses me sont données ne travaillent pas pour moi. Ma première tâche est d'écrire une requête où elle énumère le projet avec la plupart des heures.

Une réponse était la suivante: xxx

erreur i get:

MSG 130, niveau 15, état 1, ligne 1 Impossible d'effectuer une fonction agrégée sur une expression contenant un agrégat ou une sous-requête.

secondaire est xxx

erreur que je reçois est: < P> MSG 130, niveau 15, État 1, Procédure Project_with_Proust_hours, ligne 5 [Ligne de départ du lot 0] Ne peut pas effectuer une fonction d'agrégat sur une expression contenant un agrégat ou une sous-requête.

Le résultat final im cherche est que la console affiche seulement 1 Proj_id ou PROJ_NAME qui a les heures les plus travaillées de résumer tous les heures travaillées des employés qui travaillaient dans ce projet.

Toute aide sur la manière de résoudre l'une ou l'autre de ces requêtes est grandement appréciée

Voici le script pour créer ma base de données si elle aide xxx


0 commentaires

3 Réponses :


2
votes

Utilisation de CTE code>, requête pour afficher uniquement les données avec le Max CODE> Heures de travail hebdomadaire

;
WITH cte
AS (SELECT
  project.Proj_ID,
  proj_Name,
  SUM(weekly_work_hrs) sumofhrs
FROM Project
INNER JOIN work_period
  ON Project.Proj_ID = work_period.Proj_Id
GROUP BY project.Proj_ID,
         proj_Name)
SELECT
  *
FROM cte
WHERE sumofhrs = (SELECT
  MAX(sumofhrs)
FROM cte)


0 commentaires

1
votes

Vous pouvez interroger, agréger et simplement prendre le top 1 xxx


1 commentaires

Merci, donc ajouté avec la clause des liens et un groupe fixe à ne pas "max ()" le nom pour confondre les liens en somme ()



0
votes

Vous pouvez commander par code> la somme des heures de descente et choisissez le résultat supérieur uniquement avec top 1 code>. Si vous souhaitez afficher tous les principaux projets en cas d'une cravate, utilisez le avec les cravates code> d'option sur haut code>. Sinon, omettez le avec des cravates code> à (au hasard) en choisir un en cas d'égalité. Vous voudrez peut-être aussi rejoindre code> au lieu d'une jointure intérieure code> de sorte que, si vous n'avez que des projets que personne n'a encore fonctionné, ils sont sortis de toute façon - zéro heure est techniquement techniquement également valide maximum.

SELECT TOP 1
           WITH TIES
       p.proj_id,
       p.proj_name
       FROM project p
            LEFT JOIN work_period wp
                      ON wp.proj_id = p.proj_id
       GROUP BY p.proj_id,
                p.proj_name
       ORDER BY sum(coalesce(wp.weekly_work_hrs, 0)) DESC;


0 commentaires