2009-11-17 6 views
1

J'ai un problème lors de l'écriture d'une requête. En ce moment je peux récupérer un enregistrement horaire des pourcentages pour chaque machine en cours d'exécution et j'ai un tableau qui montre, chaque jour, chaque pourcentage enregistré pour chaque machine par heure. Le code ressemble à ceci:Problème de requête dans SQL Server

....... 
WHERE  (tblCheckResult.DateTime >= @DateFrom) 
AND (tblCheckResult.DateTime <= DateTo) AND (tblCheck.CheckID = 69) 
....... 

CheckID étant l'identifiant pour les pourcentages. Ce que je veux faire, c'est montrer un enregistrement mensuel moyen et un enregistrement annuel, par ex. Janvier 80%, fév 95% etc. Quelqu'un peut-il s'il vous plaît aviser?

Merci

Répondre

4

Vous pouvez utiliser DatePart pour récupérer la partie de mois/année partie et le groupe par ceux-ci.

Quelque chose comme ça

DECLARE @Table TABLE(
     DVal DATETIME, 
     Val FLOAT 
) 


INSERT INTO @Table (DVal,Val) SELECT '01 Jan 2008', 10 
INSERT INTO @Table (DVal,Val) SELECT '02 Jan 2008', 20 
INSERT INTO @Table (DVal,Val) SELECT '03 Jan 2008', 30 
INSERT INTO @Table (DVal,Val) SELECT '04 Jan 2008', 40 
INSERT INTO @Table (DVal,Val) SELECT '05 Jan 2008', 50 
INSERT INTO @Table (DVal,Val) SELECT '06 Jan 2008', 60 

INSERT INTO @Table (DVal,Val) SELECT '01 Feb 2008', 11 
INSERT INTO @Table (DVal,Val) SELECT '02 Feb 2008', 22 
INSERT INTO @Table (DVal,Val) SELECT '03 Feb 2008', 33 
INSERT INTO @Table (DVal,Val) SELECT '04 Feb 2008', 44 
INSERT INTO @Table (DVal,Val) SELECT '05 Feb 2008', 55 
INSERT INTO @Table (DVal,Val) SELECT '06 Feb 2008', 66 


INSERT INTO @Table (DVal,Val) SELECT '01 Jan 2009', 16 
INSERT INTO @Table (DVal,Val) SELECT '02 Jan 2009', 26 
INSERT INTO @Table (DVal,Val) SELECT '03 Jan 2009', 36 
INSERT INTO @Table (DVal,Val) SELECT '04 Jan 2009', 46 
INSERT INTO @Table (DVal,Val) SELECT '05 Jan 2009', 56 
INSERT INTO @Table (DVal,Val) SELECT '06 Jan 2009', 66 

INSERT INTO @Table (DVal,Val) SELECT '01 Feb 2009', 17 
INSERT INTO @Table (DVal,Val) SELECT '02 Feb 2009', 27 
INSERT INTO @Table (DVal,Val) SELECT '03 Feb 2009', 37 
INSERT INTO @Table (DVal,Val) SELECT '04 Feb 2009', 47 
INSERT INTO @Table (DVal,Val) SELECT '05 Feb 2009', 57 
INSERT INTO @Table (DVal,Val) SELECT '06 Feb 2009', 67 


SELECT DATEPART(yy, DVal) YearPart, 
     DATEPART(MM, DVal) MonthPart, 
     AVG(Val) 
FROM @Table 
GROUP BY DATEPART(yy, DVal), 
     DATEPART(MM, DVal) 

SELECT DATEPART(yy, DVal) YearPart, 
     AVG(Val) 
FROM @Table 
GROUP BY DATEPART(yy, DVal) 
1

Je pense que vous entrez incorrecte requête SQL. Afin d'éviter ce problème, vous devriez écrire

insert into table <table_name> select <value>; 

Si vous rencontrez des problèmes dans l'exécution de requêtes, alors vous devriez vérifier en ligne pour les requêtes SQL. Si le problème persiste, la base de données SQL risque d'être endommagée. Dans une telle situation, vous devez utiliser l'application stellar SQL recovery pour résoudre ce problème.