Этот результирующий набор получен из уже сложного фрагмента sql, но im stuck пытается фильтровать данные вниз.SQL Группировка данных и актуальность установки
-Детали с активным = 1 и утвержден = 0 означает, что они живые
-Детали с активным = 0 и утвержден = 0 означает, что они находятся на рассмотрении однако, один с самым последним updateddate является последней версией.
Поскольку не все поля против того же VERSIONID уникальны, я не в состоянии выбрать MAX (updateDate), [все остальные поля] группы по [всех других областях]
Im с помощью SQL Server 2012 - См. Ниже таблицу sql insert mock
Я попробовал это с футляром, но у меня все еще есть такая же проблема, как версияId не уникальна. В обеих попытках я получаю один и тот же рекорд.
CASE
WHEN CONVERT(varchar(1), CAST(c.active AS varchar)) + CONVERT(varchar(1), CAST(c.approved AS varchar)) = ''10'' THEN 1
WHEN CONVERT(varchar(1), CAST(c.active AS varchar)) + CONVERT(varchar(1), CAST(c.approved AS varchar)) = ''00'' AND MAX(c.lastUpdate) = c.lastUpdate THEN 2
ELSE 0
END AS
Содержимое, показывающее все предметы, в прямом эфире и в ожидании.
Title |updatedDate | versionId | approved | pending | ParentCategoryId | ChildCategoryId
=================================================================================================================================
Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 1 | 1
Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 2 | 2
Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 2 | 3
Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 1 | 1
Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 2 | 2
Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 2 | 3
Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 1 | 1
Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 2 | 2
Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 2 | 3
Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 1 | 1
Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 2 | 2
Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 2 | 3
Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 1 | 1
Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 5
Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 12
Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 11
Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 1
Что я хочу, чтобы иметь возможность вернуть то, что будет определить, какой активный набор записей (т.е. уместность = 1) и которые являются наиболее недавно обновлены и до (то есть уместность = 2) и которые игнорировать (т.е. релевантность = 0). Любая помощь очень ценится
relevance | Title |updatedDate | versionId | approved | pending | ParentCategoryId | ChildCategoryId
=============================================================================================================================================
2 | Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 1 | 1
2 | Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 2 | 2
2 | Maths test |2014-12-13 12:11:14.100 | A744066251C0F108 | 0 | 1 | 2 | 3
0 | Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 1 | 1
0 | Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 2 | 2
0 | Maths test |2014-12-13 12:10:48.777 | BCD74AAD664F2FAC | 0 | 1 | 2 | 3
0 | Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 1 | 1
0 | Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 2 | 2
0 | Maths test |2014-12-13 12:09:09.033 | A6D650EB233DBE0F | 0 | 1 | 2 | 3
1 | Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 1 | 1
1 | Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 2 | 2
1 | Maths test |2014-12-13 12:07:44.780 | GV54M6764ASD3HK9 | 1 | 0 | 2 | 3
1 | Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 1 | 1
1 | Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 5
1 | Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 12
1 | Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 11
1 | Science test |2014-07-04 15:53:02.000 | ARE8327FURP24KS4 | 1 | 0 | 2 | 1
Поскольку SQLFiddler не работает Я добавил SQL вставки здесь CREATE TABLE #content ( ID INT IDENTITY (1,1) NOT NULL, название VARCHAR (20) , lastUpdate DateTime, VERSIONID VARCHAR (30), активные TINYINT, одобрено TINYINT, parentCategoryId INT, childCategoryId INT );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:11:14' , 'A744066251C0F108' , 0 , 0 , 1 , 1 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:11:14' , 'A744066251C0F108' , 0 , 0 , 2 , 2 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:11:14' , 'A744066251C0F108' , 0 , 0 , 2 , 3 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:10:48' , 'BCD74AAD664F2FAC' , 0 , 0 , 1 , 1 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:10:48' , 'BCD74AAD664F2FAC' , 0 , 0 , 2 , 2 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:10:48' , 'BCD74AAD664F2FAC' , 0 , 0 , 2 , 3 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:09:09' , 'A6D650EB233DBE0F' , 0 , 0 , 1 , 1 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:09:09' , 'A6D650EB233DBE0F' , 0 , 0 , 2 , 2 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:09:09' , 'A6D650EB233DBE0F' , 0 , 0 , 2 , 3 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:07:44' , 'GV54M6764ASD3HK9' , 1 , 0 , 1 , 1 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:07:44' , 'GV54M6764ASD3HK9' , 1 , 0 , 2 , 2 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Maths test' ,'2014-12-13 12:07:44' , 'GV54M6764ASD3HK9' , 1 , 0 , 2 , 3 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Science test' ,'2014-07-04 15:53:02' , 'ARE8327FURP24KS4' , 1 , 0 , 1 , 1 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Science test' ,'2014-07-04 15:53:02' , 'ARE8327FURP24KS4' , 1 , 0 , 2 , 5 );
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Science test' ,'2014-07-04 15:53:02' , 'ARE8327FURP24KS4' , 1 , 0 , 2 , 12);
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Science test' ,'2014-07-04 15:53:02' , 'ARE8327FURP24KS4' , 1 , 0 , 2 , 11);
INSERT INTO #content
(title, lastUpdate, versionId, active, approved, parentCategoryId, childCategoryId)
VALUES ('Science test' ,'2014-07-04 15:53:02' , 'ARE8327FURP24KS4' , 1 , 0 , 2 , 1 );
select * from #content
Что вы хотите сделать? - Потому что не все поля, относящиеся к одному и тому же versionId, уникальны, я не могу выбрать MAX (updateDate), [все остальные поля] группой [все остальные поля] –
btw, ваш sql имеет ошибку - Msg 102, Level 15, Состояние 1, Строка 3 Неверный синтаксис рядом с 'auto_increment'. Он должен быть - id int IDENTITY (1,1) ПЕРВИЧНЫЙ КЛЮЧ –
re. столбец идентичности, спасибо за указание на это, это не так, как sqlFiddle все еще не работает. –