Рейтинг:
2
OriginalGriff
Данные, которые вы показываете нам, не могут быть сгруппированы, чтобы дать решение, которое вы просите, потому что нет "общих данных", которые объединяют строки 1 и 2, но не 3, или строки 1 и 3, но меняют имя на 2.
Вам нужно посмотреть на то, что вы пытаетесь сделать немного более внимательно: я почти уверен, что ваши примеры входных и выходных данных неверны: разве "ААА" не должно быть "ААА" во входных данных, а "Питер" - "Кевин" в выходных?
Если это так, то это простая группировка и объединение, чтобы получить нужные вам данные.
Поскольку ясно, что вы не хотите показывать нам, что вы пробовали, и столь же ясно, что это домашнее задание, я не собираюсь давать вам код.
Вместо этого я объясню, как получить нужный вам код.
Для начала записи выберите с помощью группы:
SELECT ... fields ...
FROM MyTable
GROUP BY <grouping column>
Ваш столбец группировки, очевидно, будет PAN, а поля будут представлять собой столбец группировки, комбинированный баланс, наименьший номер клиента и количество строк в группе.
Это довольно тривиально: протестируйте его и убедитесь, что у вас есть правильные результаты:
PAN Balance CustNo Count
Aaa. 100 1 2
BBB. 100 2 1
Тогда все, что вам нужно, это использовать соединение, чтобы объединить его с вашей исходной таблицей, чтобы получить имя, и все готово.
Просто - так что попробуйте и покажите нам, что у вас получилось.
Hemil Gandhi
Вы правы, я по ошибке добавил еще одну букву А в "Ааааа". & я хочу, чтобы имя было более низким клиентом, чем у меня. Названия не похожи, что является моей главной проблемой при выполнении group by.
Надеюсь я адекватно объяснил свою собственн
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
OriginalGriff
Правильно - так что же вы пробовали?
OriginalGriff
И как получилось, что "ВВВ" стал "Питером" вместо "Кевином"?
Hemil Gandhi
Улучшенные вопрос
OriginalGriff
Ответ обновлен.
Hemil Gandhi
Я построил ниже упомянутый запрос, чтобы получить данные PAN wise, теперь я меньше знаю, как получить имя без дублирования PAN.
выберите клиента.Пан,граф(кредит.Acno) как количество,сумма(кредит.Бал) от займа внутреннее соединение поддержки
в кредит.CustNo=клиент.Код, где AcSts<>9 и len(customer.pan)=10 group by PAN
OriginalGriff
Прочитайте, что я сказал: "начните с написания SELECT с помощью GROUP BY", "протестируйте его и убедитесь, что у вас есть правильные результаты"
Затем добавьте соединение - если вы не знаете, как это сделать, начните с ваших заметок о курсе GROUP BY (через него все довольно просто), а затем перечитайте те, что на JOIN.
GROUP BY может возвращать только поле группировки и агрегированные результаты, но никогда не конкретное содержимое столбца, которого нет в группе.
Перестань гадать, начни думать! :смеяться:
Hemil Gandhi
выберите c.наименование,Си.Пан,граф(Л. Acno) как количество,сумма(л. ClearBal) от LON20190629 а л внутреннее соединение клиента с
на L. CustNo=c.Код внутреннего соединения
(
Выберите pan, MIN(код) MinCustId
от клиента
ГРУППА ПО КАСТРЮЛЕ
) tbl1
На tbl1.Пан = С. Сковороды
Где tbl1.MinCustID = C. code AND l.AcSts<>9 group by c.PAN,c.Name
OriginalGriff
Добавьте количество и сумму в группу BY, если они находятся в одной таблице - ваш вопрос подразумевает, что они есть, но этот код показывает три таблицы вместо той, которая была у вас изначально.
Для одного стола я сделал вот что:
SELECT g.PAN,
g.Count,
m.Name,
g.Balance
FROM MyTable m
JOIN (SELECT PAN,
SUM(Balance) AS Balance,
MIN([Cust No]) AS CustNo,
COUNT([Cust No]) AS Count
FROM MyTable
GROUP BY PAN) g
ON g.CustNo = m.[Cust No];
Hemil Gandhi
У меня есть две таблицы loan & customer, таблица loan имеет номер клиента и баланс, где в качестве таблицы customer имеет номер клиента,имя и PAN.
OriginalGriff
Это действительно хорошая идея, чтобы дать людям правильную информацию, когда вы впервые публикуете вопрос - одна таблица отличается от нескольких таблиц, и это может изменить ответ.
Это профессия, которая нуждается в точности, поэтому предоставление информации "вроде этого" на самом деле никому не помогает.
Hemil Gandhi
Отметил...!!! Наконец, я сделал этот запрос, который пропускает записи дубликатов Pan.
выберите c.наименование,Си.Пан,граф(Л. Acno) как количество,сумма(л. ClearBal) как бал из LON20190629 а л внутреннее соединение клиента с
на L. CustNo=c.Код внутреннего соединения
(
Выберите pan, MIN(код) MinPoint
от клиента
где len(pan)>6
ГРУППА ПО КАСТРЮЛЕ
) tbl1
На tbl1.Пан = С. Сковороды
Где tbl1.MinPoint = С. код и Л. AcSts&ЛТ;&ГТ;9 и L.ClearBal&ЛТ;группа " 0 " по гр.Пан,ц.Наименование заказа на бал алфавиту