【发布时间】:2020-07-13 04:58:22
【问题描述】:
我找到了以下代码,它运行良好。有人可以建议一种方法如何将位置表集成到 cte 中,以便我每行都获得一个随机的 location_id。我怀疑我需要另一个联合,但我不确定如何获得随机 location_id
在此示例中,位置表是连续排序的,以便于发布,但并非总是如此。
CREATE TABLE schedule_hdr AS
SELECT level AS schedule_id,
'Schedule ' || level AS schedule_name
FROM dual
CONNECT BY level <= 2;
CREATE TABLE locations AS
SELECT level AS location_id,
'Door ' || level AS location_name,
CASE round(dbms_random.value(1,3))
WHEN 1 THEN 'A'
WHEN 2 THEN 'T'
WHEN 3 THEN 'G'
END AS location_type
FROM dual
CONNECT BY level <= 25;
ALTER TABLE locations
ADD ( CONSTRAINT location_id_pk
PRIMARY KEY (location_id));
WITH random_times ( schedule_id, datetime, lvl ) AS (
SELECT schedule_id,
TRUNC(sysdate)
+
NUMTODSINTERVAL( FLOOR(DBMS_RANDOM.VALUE(0,23*60)), 'MINUTE' ),
1
FROM schedule_hdr
UNION ALL
SELECT schedule_id,
datetime + NUMTODSINTERVAL(FLOOR(DBMS_RANDOM.VALUE(6,11)), 'MINUTE'),
lvl + 1
FROM random_times
WHERE lvl < 5
)
SELECT schedule_id,
datetime
FROM random_times
ORDER BY schedule_id, datetime;
【问题讨论】:
标签: sql oracle random common-table-expression