#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;