SQL Server: поиск по первым 3 словам и последним 3 словам в запросе множественного объединения - PullRequest
0 голосов
/ 27 июня 2019

Я хочу написать оператор SQL Server, который ищет первые 3 слова, а также последние 3 слова в строке, начинающейся с чего-то.

Пример: 19032560951039OHUG Я хочу использовать **HUG** в качестве параметра поиска также для 400305 Я хочу использовать 400

Я уже пробовал это, но он возвращал пустой запрос.

Первый: основной запрос

select * 
from memtrans 
where right(trx_no, 3) = 'HUG' 
  and left(gl_no, 3)= '400'

Таблица для основной запрос

enter image description here

Когда я пишу запрос соединения с основным запросом:

select 
    custinfo.SavOfficer, 
   -sum(memtrans.amount) as feencharges
from  
    memtrans 
inner join
    custinfo on memtrans.ac_no = custinfo.cust_no
where
    right(memtrans.trx_no, 3) = 'HUG' 
    and left(memtrans.gl_no, 3)= '400'
group by
    custinfo.SavOfficer

Который вернул пустой результат. Но если я удалю предложение WHERE, результаты будут возвращены

select 
    custinfo.SavOfficer,
    -sum(memtrans.amount) as feencharges
from 
    memtrans 
inner join
    custinfo on memtrans.ac_no = custinfo.cust_no
group by 
    custinfo.SavOfficer

Пример таблицы для запроса без предложения WHERE

enter image description here

custinfo таблица

enter image description here

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Спасибо, ребята, за помощь.Мой клиент дал неверный код транзакции, неизвестный ему, они изменили некоторые структуры таблиц, что привело к другим кодам транзакций.После глубокого изучения я смог получить результаты с использованием другого кода.

Предыдущий код

select custinfo.SavOfficer,
  -SUM(memtrans.amount) AS feencharges
   FROM memtrans 
  INNER JOIN 
  custinfo
  ON  memtrans.ac_no = custinfo.cust_no
  WHERE
   right(memtrans.trx_no,3) = 'HUG' 
   AND left(memtrans.gl_no,3)= '400'
  GROUP BY custinfo.SavOfficer

Новый код:

select custinfo.SavOfficer,
 -SUM(memtrans.amount) AS feencharges
 from memtrans 
inner join 
custinfo
on  memtrans.ac_no = custinfo.cust_no
where
 right(memtrans.trx_no,3) = 'HUG' or right(memtrans.trx_no,1) = 'N'

group by custinfo.SavOfficer

Большая благодарность идет к @ mgrollins и @ Larnu за то время.

0 голосов
/ 27 июня 2019

Если вы ищете и 400, и обнять это должно сработать.

SELECT * 
FROM
memtrans
INNER JOIN 
custinfo
ON  memtrans.ac_no = custinfo.cust_no
WHERE RIGHT(trx_no, 3) = 'HUG'
AND LEFT(trx_no, 3) = '400'

Если вы ищете 400 или обнимайтесь, используйте это.

SELECT * 
FROM
memtrans
INNER JOIN 
custinfo
ON  memtrans.ac_no = custinfo.cust_no
WHERE RIGHT(trx_no, 3) = 'HUG' 
AND LEFT(trx_no, 3) = '400'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...