Проблема запроса в SQL Server - PullRequest
       11

Проблема запроса в SQL Server

1 голос
/ 17 ноября 2009

У меня проблема с написанием запроса. На данный момент я могу получить почасовую запись процентов для каждой работающей машины, и у меня есть таблица, в которой ежедневно отображается каждый процент, записанный для каждой машины в час. Код выглядит так:

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

CheckID - это идентификатор для процентов. Что я хочу сделать, так это показать средние ежемесячные записи и годовые записи, например, Январь 80%, февраль 95% и т. Д. Кто-нибудь может посоветовать, пожалуйста?

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 ноября 2009

Вы можете использовать DatePart для извлечения части месяца / части года и группы по ним.

Примерно так

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 голос
/ 19 октября 2011

Я думаю, что вы вводите неправильный запрос SQL. Чтобы избежать этой проблемы, вы должны написать

insert into table <table_name> select <value>;

Если у вас возникли проблемы с выполнением запросов, вам следует проверить в режиме онлайн запросы SQL. Если проблема не устраняется, возможно, повреждена база данных SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...