У меня возникла проблема с форматированием данных при выполнении запроса в базу данных Oracle.Форматирование запросов Oracle DB
Что я хочу сделать, это экспортировать некоторые данные в формат ниже в текстовый файл;
1IN20071001 40005601054910101200 1 65
- Первый номер (1 выше) = номер компании (позиция 1-5, заготовки Infront)
- В или UT = IN для clockin и UT для clockout (позиция 6-7)
- 20071001 = дата (дата бизнеса) в формате YYYYMMDD (поз 8-15)
- 400056010549 = EmployeeID (поз 16-33, выравнивание по правому краю, заготовки Infront)
- 101012 = Время в формате TTMMSS (поз 34-39)
- 00 = FT, всегда 00 (позиция 40-41)
- Заготовки = всегда 8 пустых мест (позиция 42-49)
- 1 = Не знаю, для чего это используется, но всегда должно быть 1 (позиция 50 , выравнивание по правому краю заготовки, Infront)
- 65 = «Kostnadsställe», ENT_HR_EMPLOYEE.USERALPHA6 (поз 51-55, выравнивание по правому краю заготовки, Infront)
в настоящее время я использую ниже запрос, но это, где мои знания SQL заканчиваются ...
COLUMN one FORMAT a5 HEADER JUSTIFY RIGHT
COLUMN two FORMAT a8 HEADER two
COLUMN three FORMAT a18 HEADER three JUSTIFY RIGHT
COLUMN four FORMAT a5 HEADER three JUSTIFY RIGHT
SELECT h.fkod AS one, 'IN',
SUBSTR(t.clockindatetime,0,4) ||
SUBSTR(t.clockindatetime,6,2) ||
SUBSTR(t.clockindatetime,9,2) AS two,
i.employeeid AS three
SUBSTR(t.clockindatetime,11,6) || '00 1',
h.fkod AS four
FROM ent_time_card_detail t,
max_employeeid_history i,
ent_hr_employee h
WHERE h.enthremployeeid = t.enthremployeeid
AND h.payrollid = i.userid
AND t.clockindatetime >= i.from_date
AND (t.clockindatetime < i.to_date OR i.to_date IS NULL);
Любой SQL-pro, который может помочь мне закончить форматирование?
Хороший материал, Петтер, он выглядит намного читабельнее – hamishmcn 2008-11-29 20:01:08