Где предложение с использованием псевдонима в одном столбце таблицы - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь получить некоторые результаты, используя один столбец из таблицы, исходя из определенных условий, результаты должны быть получены.

Ниже приведен вывод запроса: Это справочные данные для моего вопроса ниже .

select cdoctype, cfree7, cfree20
from TBISMT_DOCUMENTS
where cfree7 = '185768_TA'

enter image description here

Другой справочный запрос и пример вывода

select cdoctype, cfree7, cfree20
from TBISMT_DOCUMENTS
where cfree20 = '185768_TA'

enter image description here

Цель - : проверить, присутствуют ли какие-либо дополнительные строки в дБ для каждого типа cdoctype = 850 и cfree7. Другими словами, если есть какой-либо другой тип cdoctype, кроме 850, для которого значение в cfree7 соответствует другой строке cfree7, следует извлечь.

Я пришел с запросом ниже, и он работает, как и ожидалось, но я не уверен, как значение "t2.cfree20" отображается как 185768_TA , и оно работает.

 SELECT DISTINCT t1.cwfid, t1.cdoctype, t1.cfree7, t2.cfree20, t1.cfree20 
 FROM TBISMT_DOCUMENTS t1,
      TBISMT_DOCUMENTS t2 
 WHERE t1.cfree7 = '185768_TA'
   and t1.cdoctype= '810'
   and t1.cfree7 = t2.cfree20

Ниже приведен пример вывода

enter image description here

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Другими словами, если есть какой-либо другой тип cdoctype, кроме 850, для которого следует извлечь значение в cfree7, совпадающее с другой строкой cfree7.

Я понимаю, что выхотите любую строку, где значение в cfree7 соответствует значению в строке с cdoctype = 850. Если так:

select d.*
from TBISMT_DOCUMENTS d
where d.cdoctype <> 850 and
      exists (select 1
              from TBISMT_DOCUMENTS d2
              where d2.cfree7 = d.cfree7 and
                    d2.cdotype = 850
             );
0 голосов
/ 31 октября 2019

Используйте это, чтобы получить все строки с одинаковыми cfree7 и cfree20 и cdoctype, не равным 850

 SELECT 
         DISTINCT t1.cwfid,
         t1.cdoctype, 
         t1.cfree7,
         t2.cfree20, 
         t1.cfree20 
 FROM TBISMT_DOCUMENTS t1 
 Inner join TBISMT_DOCUMENTS t2  on t1.cfree7 = t2.cfree20
 WHERE t1.cdoctype != '850'
...