我正在尝试使用这组 47 个命令创建一个表,并在第 24 行使用 ss.sample_size 值不断收到错误“00904. 00000 - “%s: invalid identifier”:
1 CREATE TABLE BN_NAM_CPB_SAMPLES AS
2 SELECT XXX_LINE_OF_BUSINESS,
3 XXX_COUNTRY,
4 CLIENT_CATEGORY,
5 RULE_1,
6 POPULATION_TYPE,
7 SAMPLE_SIZE,
8 PARTITION_ROWNUM,
9 ID,
10 UNIQUE_ID,
11 ACCT_INTRL_ID,
12 RANDOM_VALUE
13 FROM (SELECT ROW_NUMBER ()
14 OVER (
15 PARTITION BY A.XXX_LINE_OF_BUSINESS,16
16 A.XXX_COUNTRY,
17 A.CLIENT_CATEGORY,
18 A.RULE_1,
19 A.CPB_CUST_SGMT,
20 A.POPULATION_TYPE
21 ORDER BY A.RANDOM_VALUE)
22 AS PARTITION_ROWNUM,
23 A.*,
24 ss.sample_size
25 FROM (SELECT ROWNUM AS ID,
26 A.*,
27 DBMS_RANDOM.VALUE (0, 1) AS RANDOM_VALUE
28 FROM (SELECT XXX_COUNTRY,
29 CLIENT_CATEGORY,
30 XXX_LINE_OF_BUSINESS,
31 UNIQUE_ID,
32 ACCT_INTRL_ID,
33 RULE_1,
34 CPB_CUST_SGMT,
35 POPULATION_TYPE
36 FROM BN_CPB_POP_FOR_SAMPLING
37 ) A) A
38 INNER JOIN
39 BN_CPB_SAMPLE_SIZES SS
40 ON A.XXX_COUNTRY = SS.XXX_COUNTRY
41 AND A.CLIENT_CATEGORY = SS.CLIENT_CATEGORY
42 AND A.POPULATION_TYPE = SS.POPULATION_TYPE
43 AND A.XXX_LINE_OF_BUSINESS = SS.XXX_LINE_OF_BUSINESS
44 AND A.RULE_1 = SS.RULE_1
45 AND A.CPB_CUST_SGMT = SS.CPB_CUST_SGMT
46 ) B
47 WHERE B.PARTITION_ROWNUM <= B.SAMPLE_SIZE;
BN_CPB_SAMPLE_SIZES 表是在上一步中使用以下查询创建的:
48 CREATE TABLE BN_CPB_SAMPLE_SIZES AS
49 SELECT XXX_LINE_OF_BUSINESS,
50 XXX_COUNTRY,
51 CLIENT_CATEGORY,
52 CPB_CUST_SGMT,
53 RULE_1,
54 POPULATION_TYPE,
55 UNIQUE_ID,
56 ACCT_INTRL_ID
57 FROM BN_CPB_POP_FOR_SAMPLING;