У меня есть эта таблица:SQL запрос для объединения данных из одной и той же таблицы
create table mytable
(ID varchar(10), VNDCOD INT, MANUF varchar(10), PRICE INT, COST INT);
insert into mytable values
('4', 1000, 'AG', 5455, 9384),
('4', 1000, 'A1', 16, 31),
('4', 2000, 'AG', 5253, 8339)
Я хочу, чтобы иметь возможность выбрать что-то вроде этого:
ID MANUF PRICE COST PRICE COST
4 AG 5455 9384 5253 8339
4 A1 16 31
Если есть два MANUF
для ID
, мы должны объединить их на одной линии, где слева находятся PRICE
и COST
, а слева - VNDCOD 2000
справа, как и в моем ожидаемом результате. Я не знаю, можно ли сделать это в одном запросе. Любая помощь будет принята с благодарностью.
Вы должны были бы использовать [динамический pivot на нескольких столбцах] (http://blogs.lessthandot.com/index.php/datamgmt/datadesign/dynamic-pivot-on-multiple-columns/) для этого, вероятно, используя 'ROW_NUMBER()'. Лично я 'd рассмотрите эту проблему отображения, которая должна быть обработана в приложении. Выполнение такого рода сложностей с SQL, потому что оно ломается первым обычная форма. Язык не был написан с учетом такого рода вещей. Вы могли почти сказать, что это намеренно * сложно. –
В чем проблема с решением ниже? В моей программе SQLRPGLE было проще и быстрее иметь только один курсор для заполнения моего подфайла. – Artyom2033
Мое предположение заключалось в том, что 'VNDCOD' будет иметь множество различных возможных значений, не представленных двумя возможными значениями. Философски, однако, вы берете две колонки и разделяете их на четыре и создаете повторяющиеся группы. В таком тривиальном случае все будет хорошо работать, но оно не будет масштабироваться очень далеко. –