📜  JCL中的Join语句

📅  最后修改于: 2021-08-25 18:47:33             🧑  作者: Mango

先决条件–作业控制语言(JCL)
在RDBMS中,SQL JOIN子句用于联接表并对其执行多项操作。要对不同平面文件中的记录执行操作,请使用JOINKEYS。借助SORT JCL中的JOINKEYS,可以根据匹配的字段或键对匹配和不匹配的记录执行各种联接操作。可以通过多种方式执行联接,例如内部联接,完全外部联接,左外部联接,右外部联接和不成对的组合。

连接操作由三个重要的控制语句JOINKEYS,JOIN和REFORMAT控制。 SORTJNF1和SORTJNF2是用于指定将用于执行联接操作的文件的DD语句。

控制声明:

  1. JOINKEYS FILES = F1,FIELDS =(1,10,A)–指定file1联接条件。
  2. JOINKEYS FILES = F2,FIELDS =(1,10,A)–指定file2联接条件。
  3. REFORMAT FIELDS =(F1:1,71,F2:1,9)– REFORMAT字段告诉sort实用程序,通过指定开始和结束位置将哪些字段从输入文件写入输出文件。

JCL SORT联接两个文件并从两个文件写入记录:

  1. 匹配记录(内部加入)–
    如果未在排序卡中指定join语句,则将F1和F2中的配对记录写入输出文件。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            REFORMAT FIELDS=(F1:1, 71, F2:1, 9)
    /*
  2. 来自文件1的匹配记录和非匹配记录–
    排序卡片以保留F1文件中未配对的记录以及配对的记录。这种连接称为“左外部连接”。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F1
            REFORMAT FIELDS=(F1:1, 71, F2:1, 9)
    /*
  3. 与文件1不匹配–
    排序卡保留F1文件中未配对的记录,不能在F2中使用重新格式化。
    //SYSIN DD * 
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F1, ONLY
            REFORMAT FIELDS=(F1:1, 71)
    /*
  4. 匹配记录和非匹配文件2 –
    对卡片进行排序,以保留F2文件中未配对的记录以及配对的记录。这种连接称为RIGHT OUTER JOIN。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F2
            REFORMAT FIELDS=(F1:1, 71, F2:1, 9)
    /*
  5. 与File2不匹配–
    排序卡保留F2文件中未配对的记录,不能在F1中使用重新格式化。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F2, ONLY
            REFORMAT FIELDS=(F2:1, 9)
    /*
  6. 两个文件中的匹配记录和非匹配记录–
    对卡进行排序,以保留F1和F2文件中的未配对记录以及配对记录。这种连接称为FULL OUTER JOIN。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F1, F2
            REFORMAT FIELDS=(F1:1, 71, F2:1, 9)
    /*
  7. 两个文件的不匹配记录–
    排序卡片以仅保留F1和F2文件中未配对的记录。
    //SYSIN DD *
            SORT FIELDS=COPY
            JOINKEYS FILES=F1, FIELDS=(1, 10, A)
            JOINKEYS FILES=F2, FIELDS=(1, 10, A)
            JOIN UNPAIRED, F1, F2, ONLY or JOIN UNPAIRED, ONLY
            REFORMAT FIELDS=(F1:1, 71, F2:1, 9)
    /*