как найти записи, которые имеют определенные значения - PullRequest
0 голосов
/ 11 мая 2018

У меня есть одна таблица журналов, в которой я могу проверить, сколько записей вставлено в какую таблицу.

Я хочу найти, в каком устройстве есть 0 записей, вставленных из полных журналов.

примерdata

Id  DeviceID    Success RecordInserted  ErrorMessage    LogDate
1   0000ACFFFE4D48  1   395 NULL    2018-05-11 12:54:55.713
2   0000ACFFFE4E6A  1   492 NULL    2018-05-11 12:55:10.277
3   0000ACFFFE51D9  1   247 NULL    2018-05-11 12:55:17.790
4   0000ACFFFE5585  1   399 NULL    2018-05-11 12:55:28.267
5   0000ACFFFE5B03  1   493 NULL    2018-05-11 12:55:44.313
6   0000ACFFFE56E3  1   456 NULL    2018-05-11 12:56:00.743
7   0000ACFFFE1183  1   410 NULL    2018-05-11 12:56:09.817
8   0000ACFFFE2693  1   333 NULL    2018-05-11 12:56:24.613
9   0000ACFFFE4454  1   456 NULL    2018-05-11 12:56:36.867
10  0000ACFFFE7223  1   10056   NULL    2018-05-11 13:03:04.410
11  0000ACFFFE1CBB  1   10046   NULL    2018-05-11 13:06:03.860
12  0000ACFFFE2F81  1   0   NULL    2018-05-11 13:06:06.567
13  0000ACFFFE6F29  1   0   NULL    2018-05-11 13:06:08.307
14  0000ACFFFE0B8D  1   10078   NULL    2018-05-11 13:10:28.020
15  0000ACFFFE4DF2  1   409 NULL    2018-05-11 13:10:39.950
16  0000ACFFFE4D48  1   0   NULL    2018-05-11 13:16:32.027
17  0000ACFFFE4E6A  1   1   NULL    2018-05-11 13:16:38.640
18  0000ACFFFE51D9  1   1   NULL    2018-05-11 13:16:41.997
19  0000ACFFFE5585  1   1   NULL    2018-05-11 13:16:49.473
20  0000ACFFFE5B03  1   1   NULL    2018-05-11 13:16:56.797
21  0000ACFFFE56E3  1   1   NULL    2018-05-11 13:17:03.703
22  0000ACFFFE1183  1   0   NULL    2018-05-11 13:17:10.283
23  0000ACFFFE2693  1   1   NULL    2018-05-11 13:17:14.830
24  0000ACFFFE4454  1   0   NULL    2018-05-11 13:17:21.880
25  0000ACFFFE7223  1   64  NULL    2018-05-11 14:06:32.153
26  0000ACFFFE1CBB  1   64  NULL    2018-05-11 14:09:26.907
27  0000ACFFFE2F81  1   0   NULL    2018-05-11 14:09:28.743
28  0000ACFFFE6F29  1   0   NULL    2018-05-11 14:09:30.667
29  0000ACFFFE0B8D  1   64  NULL    2018-05-11 14:11:42.227
30  0000ACFFFE4DF2  1   3   NULL    2018-05-11 14:11:48.857

Ожидаемый вывод

0000ACFFFE6F290B
0000ACFFFE2F818D

В этом 2 deviceid вставлено 0 записей

sql query

  select deviceid from logs where recordinserted !=0 and deviceid in (select deviceid from logs where recordinserted= '0')

error

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Ответы [ 3 ]

0 голосов
/ 14 мая 2018
select deviceid 
from logs
group by deviceid
having max(recordinserted) = 0 -- no row greater zero exists
0 голосов
/ 15 мая 2018

Вы ищете устройства с нулевыми записями? Или устройства, чьи записи всего 0 RecordsInserted? Я не вижу ожидаемых выходных идентификаторов в списке, и этот идентификатор '0000ACFFFE2F81' содержит две записи, каждая из которых содержит 0 вставленных записей.

Для DeviceId, которых нет в списке, DeviceId должен быть внешним ключом для другой таблицы, и вы можете найти те, которых нет в таблице журналов, с помощью этого запроса:

SELECT Id FROM DeviceTable
EXCEPT 
SELECT DeviceId FROM Logs

Чтобы получить те, которые имеют в общей сложности 0 записей в таблице журналов, используйте этот запрос:

SELECT DeviceId
      ,SUM(RecordsInserted)
FROM Logs
GROUP BY DeviceId
Having SUM(RecordsInserted) = 0
0 голосов
/ 11 мая 2018
select deviceid from logs where recordinserted = 0

Вы можете использовать предложение where, как это, когда вставленный в запись столбец имеет целочисленный тип.

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