Table T1:
Column T1A
Column insertdate (TIMESTAMP(6), indexed)
Column T1B
Table T2:
Column T1B
Column T2name
Column T2C
Table T3:
Column T2C
Column T3name
Select T1A, count(0)
from T1
where (insertdate between trunc(sysdate) - 2 and trunc(sysdate) - 1) group by T1A;
Производит подсчет вчерашних записей в T1 для каждого значения T1A.Oracle SQL-запрос для объединения столбцов из нескольких таблиц и подсчета с использованием группы по
Select tbl2.T2name, tbl3.T3name
from T2 tbl2, T3 tbl3
where tbl2.T1B in (select tbl1.T1A from T1 tbl1
where (insertdate between trunc(sysdate) - 2 and trunc(sysdate) - 1)
group by T1A)
and tbl2.T2C = tbl3.T2C;
Возвращает имена столбцов в T2 и T3, которые сопоставляются значениям в столбце T1A.
Теперь я хочу объединить два, поэтому первый запрос содержит имена вместо поля ключа (T1A), которое не имеет смысла для читателя: Report T2name, T3name, счетчик вчерашних записей в T1 для каждого значения T1A.
Очевидно, что это не настоящие имена таблиц и столбцов. Если я ошибся в синтаксисе, пожалуйста, игнорируйте, поскольку он не был запущен как есть. Все предложения приветствуются.
Пожалуйста, прочитайте справку о создании [mcve] – ninesided
Ваш запрос не производит подсчет вчерашних записей, она производит подсчет записей из двух дней назад. Если вам нужны вчерашние записи, предложение where должно быть «... между trunc (sysdate) - 1 и trunc (sysdate)». Кроме того, вопрос для вас: если в записи есть временная часть отметки времени ровно 00: 00: 00.000000, должна ли она учитываться как днем до, так и на следующий день? Использование 'между ', как и вы, будет иметь такой результат. (Или это гарантирует, что такое значение никогда не произойдет в реальной жизни?) – mathguy
Проблема, как заявлено, кажется, не имеет большого смысла. Разумно спросить T2name, если T1B является первичным ключом в таблице T2 и внешним ключом в таблице T1. Но какова связь между T2 и T3 (вдоль столбца T2C?) Если, как кажется логичным, T2C является первичным ключом в T3 и внешним ключом в T2, может быть более одного значения T2C (и, следовательно, T3name) для каждого T2name - в противном случае, почему есть отдельная таблица T3 и не имеет T3name непосредственно в T2? И если действительно может быть более одного T3name для каждого T2name, то что вы хотите в своем выходе? – mathguy