Member 13713473 Ответов: 2

Как объединить/сгруппировать 2 или более строк, начинающихся с одних и тех же 4 символов в MS SQL


Привет,

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

В настоящее время код, который у меня есть, таков:
select (left(P.PartNum, 4)), sum(P.OnhandQty) as PartNum2 
from PartBin P 
group by PartNum


Я пытаюсь сгруппировать/объединить их так, чтобы если есть 5 частей, которые начинаются с AA11 и имеют количество 2 Каждая, то выход был бы:
Часть # Кол-Во
АА11 10
Вместо:
Часть # Кол-Во
АА11Т9 2
AA11B4 2
АА1143 2
АА1173 2
АА11А5 2

Что я уже пробовал:

select left(Q.PartNum, 4), sum(Q.OnhandQty) as PartNum3
from PartBin Q
where left(Q.PartNum, 4) like left(Q.PartNum, 4)
group by PartNum

2 Ответов

Рейтинг:
10

Andrew Lyzlov

Привет,
Это должно сработать:

SELECT 
	LEFT(Q.PartNum,4) AS PartNumLeft, 
	SUM(Q.OnhandQty) AS PartNumQty
FROM PartBin AS Q
GROUP BY 
	LEFT(Q.PartNum,4)


Рейтинг:
1

W∴ Balboos, GHB

Вам нужно использовать соответствующий оператор JOIN.

Наиболее часто используются внутреннее соединение, левое соединение и правое соединение.

Первый возвращает только те строки, которые совпадают.
Два других возвращают все из одного набора, даже если нет совпадения, но делают совпадение, если это возможно. Вам почти наверняка понадобится внутреннее соединение.

Как использовать: перейти сюда Ключевое слово SQL INNER JOIN[^] чтобы вы начали.

Часть "ВКЛ" будет использовать левую(поле, 4) от каждого.


Member 13713473

Как вы можете видеть из того, что я пробовал, вся информация, которая мне нужна/нужна, находится в одной таблице.
Буду ли я по-прежнему использовать внутреннее соединение?

W∴ Balboos, GHB

Вы можете присоединить таблицу к себе. Вообще-то это обычное дело.

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

Просто дайте каждой версии таблицы свою собственную букву
Выберите A. x, A. y, B. y, C. y из таблицы в качестве A
Внутреннее соединение таблицы Б
А. Х=в. х
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТАБЛИЦЫ С
А. х=С. х

Это даст мне ключ (x) и значения для y в виде трех дополнительных столбцов. Вы, вероятно, хотите также назвать столбцы, чтобы их можно было отличить друг от друга.

Member 13713473

По какой-то причине это работает не так, как я думал. То, что я сделал, это:

Выберите A. Colum1, Sum(A. Colum2)
Из Таблицы 1 А
Внутреннее Соединение Часть B
Слева(A. Colum1, 4) = Слева(B. Colum1, 4)
Группа По A. Colum1, A. Colum2
Приказ А. Colum1, А. Colum2 АСК

И это все еще воспитывает:

Colum1 Colum2
AA11B3 2
AA11F4 2
AA113D 2
AA11F7 2
АА11С2 2

Вместо:
Colum1 Colum2
АА11 10

W∴ Balboos, GHB

Select A. Colum1, Sum(A. Colum2) - это только просмотр данных из возвращаемых значений "A". Единственное, что делает ваше соединение, - это действует как фильтр, чтобы ограничить те, которые возвращаются к тем, у которых есть совпадения.