Итак, у меня есть две таблицы, у каждой из которых есть cocnumber
или номер ChamberOfCommerce. Это всегда число 8-ди git, например, 12345678
. Однако существует проблема: первая таблица aa
имеет правильные 8-значные цифры CO C, а вторая таблица bb
содержит комбинацию из 11 или 12-ди git CO C чисел. 11 И 12-ди git числа имеют четыре 0 в конце числа, которые не имеют значения.
Пример 11-ди git CO C: 12345670000
Пример 12-ди git CO C: 123456780000
Но почему есть ли числа 11-ди git CO C? Ну, нет. Что случилось, так это то, что числа 11-ди git CO C должны иметь 0
перед ними: 0123456780000
, который обрезался при сохранении в базе данных.
случай 12-ди git CO C, я только что обрезал последние 4 цифры. Но для числа 11-ди git CO C я должен обрезать последние 4 цифры и добавить 0 перед номером CO C.
У меня вопрос, как бы я сделать оператор CASE, который выполняет эту манипуляцию, внутри LEFT JOIN?
Вот что у меня есть:
SELECT
aa.cocnumber,
bb.emloyeesnrtotal AS bb_emloyeesnrtotal
FROM aa
LEFT JOIN bb ON aa.cocnumber =
CASE
WHEN LEN(bb.cocnumber) = 12
THEN LEFT(bb.cocnumber, 8)
WHEN LEN(bb.cocnumber) = 11
THEN '0' + LEFT(bb.cocnumber, 7)
END
Похоже, это не дает правильного результата. Может кто-нибудь помочь мне указать, что я делаю неправильно? Я думаю, что я беру здесь длину всего столбца bb.cocnumber
, но как мне сделать утверждение, которое оценивает каждую ячейку bb.cocnumber
в отдельности, чтобы увидеть, есть ли соответствующее 8-ди git aa.cocnumber
?