Как объединить эти таблицы с

#join

#Присоединиться

Вопрос:

Я хочу объединить таблицу Saleperson с таблицей Salevolume. Логика объединения:

  • Таблица Saleperson имеет ключ: itemfrom и itemto, таблица Salevolume имеет ключ: Item. Когда ключ «Item» из Salevolume находится между ключом «itemfrom» и «itemto» продавца, тогда я составлю сумму salevolume, сгруппированную по продавцу

  • Ключ «accountfrom», «accountto» и «item» имеют некоторый символ в конце

Не могли бы вы мне помочь?

Спасибо

 CREATE TABLE [dbo].[Saleperson](
[Saleperson] [nvarchar](3) NULL,
[itemfrom] [nvarchar](4) NULL,
[itemto] [nvarchar](4) NULL
)
insert into [dbo].[Saleperson]
values
('A','111H','112H'),
('B','122G','125G'),
('C','134F','137F'),
('D','117','119'),

CREATE TABLE [dbo].[Salevolume](
[Item] [nvarchar](6) NULL,
[Salevolume] [int] NULL
)

insert into [dbo].[Salevolume]
values
('112H',30),
('113H',40),
('122G',30),
('134F',50),
('118',100)
  

Ответ №1:

Вам нужно сначала проверить, является ли последний символ элемента алфавитным или нет. если это алфавит, то проверьте, находится ли числовое значение и значение алфавита элемента между числовым значением и значением алфавита itemfrom и itemto соответственно, как показано ниже:

 select p.Saleperson,sum(v.Salevolume)
from Saleperson p
inner join Salevolume v 
    on v.Item between p.itemfrom and p.itemto
    OR  (
        RIGHT(v.Item,1)  between 'A' and 'Z' 
        and RIGHT(v.Item,1) between RIGHT(p.itemfrom,1) AND RIGHT(p.itemto,1)
        and REPLACE(v.item,RIGHT(v.Item,1),'') between REPLACE(p.itemfrom,RIGHT(p.itemfrom,1),'') and REPLACE(p.itemto,RIGHT(p.itemto,1),'')
    )
group by p.Saleperson;