Можно ли считать определенный сценарий в SQL Server?
У меня таблица выглядит так:
ID | I | II | III | IV | V | =============================== 1 | 1 | 0 | NULL|NULL|NULL| 2 |NULL|NULL|NULL | 0 | 1 | 3 | 1 | 0 | 0 |NULL|NULL| 4 |NULL|NULL|NULL |NULL| 1 | . . . . . . . . . . . . . . . . . .
Я использую SQL Server 2014.
Я ищу, чтобы подсчитать количество идентификаторов, имеющих сценарий вроде # 1 и # 3. Есть ли запрос, который может это сделать? Благодаря!
- проверка даты первых строк находится между датой следующих строк
- Как создать пакет SSIS для SQL Server 2008 в среде SQL Server 2014?
- SELECT подмножество (n = 1) записей, которые имеют один и тот же класс в столбце категории
- Что вызывает ошибку «Указанная ошибка LocalDB версии на этом компьютере» на SQL LocalDB?
- Вставка строк в зависимости от полей
- Пример простой блокировки сервера Sql
- Нарушение ограничения PRIMARY KEY во время репликации слиянием
- Добавление отсутствующих строк в результирующий набор
- Патч данных SQL Server для замены двух двойных кавычек между ними на одну двойную кавычку
- Как оптимизировать этот запрос обновления соединения в SQL Server 2014?
- SQL Server 2014 Вставить, где НЕ ВХОД
- Как я могу найти все компании, имеющие филиал во всех городах другой компании
- Восстановление базы данных SQL Server 2014 в SQL Server 2005
SELECT COUNT (ID) FROM YourTabel WHERE ISNULL (I, -1)! = – 1
Desc: Я – ваше имя столбца, и вы можете указать больше столбцов, где условие.
Я предполагаю, что когда вы пишете сценарий вроде # 1 и # 3, вы действительно хотите подсчитать строки, которые имеют значения, равные тем, что имеет строка 1 или строка 3. Если это так, вы бы сделали что-то подобное.
select count(*) from YourTable where (I = 1 and II = 0 and III is null and IV is null and V is null) or (I = 1 and II = 0 and III = 0 and IV is null and V is null);
В качестве альтернативы вы можете упростить приведенный выше запрос до следующей формы:
select count(*) from YourTable where (I = 1 and II = 0 and (III = 0 or III is null) and IV is null and V is null);
Возможно, что-то вроде этого – то, что вы ищете:
select * from YourTable where coalesce(I, II, III, IV, V) is not null;
Или это:
select ValidCnt = sum(case when coalesce(I, II, III, IV, V) is not null then 1 else 0 end), InvalidCnt = sum(case when coalesce(I, II, III, IV, V) is null then 1 else 0 end) from YourTable;
Надеюсь это поможет,
CREATE TABLE Joe ( ID INT , I int NULL, II int NULL, III int NULL, IV int NULL, V int NULL) INSERT INTO Joe VALUES (1, 1, 0, NULL, NULL, NULL) INSERT INTO Joe VALUES (2, NULL, NULL, NULL, 0, 1) INSERT INTO Joe VALUES (3, 1, 0, 0, NULL, NULL) INSERT INTO Joe VALUES (4, NULL, NULL, NULL, NULL, 1) -- SELECT * FROM Joe SELECT J.* FROM Joe J JOIN ( SELECT J.ID,Count(0) Counter FROM Joe J WHERE JI IS NOT NULL AND JV IS NULL GROUP BY J.Id) JoeCounts ON J.Id = JoeCounts.Id