下面有两张table
Work_Request表
ASSIGNED_TO_USER_ID NUMBER (22,10)
COMPANY_ID NUMBER (5)
COMPLETE_DATE DATE
CORP_ID CHAR (2 Byte)
CREATE_DATE DATE
CREATE_USER_ID NUMBER (22,10)
FINANCIAL_INSTITUTION_ID CHAR (2 Byte)
MODIFY_DATE DATE
MODIFY_USER_ID NUMBER (22,10)
STATUS_ID INTEGER
TOKEN_NUMBER VARCHAR2 (16 Byte)
WORK_REQUEST_DESC VARCHAR2 (500 Byte)
WORK_REQUEST_DETAILS CLOB
WORK_REQUEST_ID VARCHAR2 (36 Byte)
WORK_REQUEST_NUMBER VARCHAR2 (25 Byte)
WORK_REQUEST_TYPE_ID VARCHAR2 (36 Byte)
字符串
Work_Request_Note表
CREATE_DATE DATE
CREATE_USER_ID NUMBER (22,10)
NOTE_TEXT VARCHAR2 (4000 Byte)
WORK_REQUEST_ID VARCHAR2 (36 Byte)
WORK_REQUEST_NOTE_ID VARCHAR2 (36 Byte)
型
我从你那里得到的脚本,我有一个列在工作请求表名称为笔记,需要合并的基础上相同的确认#列。你给了我查询,其中串联的笔记相同的确认#和加入工作请求_笔记。输出串联的笔记为每个确认#按升序排列,但我们需要串联这些笔记为每个确认按升序排列.....笔记可以合并确认#按work_request_note.create_date降序排列的列和顺序这里是我的查询,它是根据升序排列的确认#合并注解
我试过下面的脚本:
WITH CombinedNotes AS (
SELECT
CASE
WHEN Lpad(DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"'), 1) - (DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')),
DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')
), 5, 0) = '0Text'
THEN Lpad(TO_CHAR(COMPANY.COMPANY_ID), 5, 0)
ELSE Lpad(DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"'), 1) - (DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')),
DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')
), 5, 0)
END AS "COMPANY NUMBER",
COMPANY.COMPANY_NAME AS "COMPANY NAME",
work_request_number AS "Confirmation #",
work_request_type.WORK_REQUEST_TYPE_NAME AS "Request Type",
--work_request.WORK_REQUEST_DESC AS "Detail Description",
regexp_replace(work_request.WORK_REQUEST_DESC, '<.+?>') "Detail Description",
TO_CHAR(work_request.CREATE_DATE, 'MM/DD/YYYY HH24:MI') AS "Date Submitted",
TO_CHAR(work_request.COMPLETE_DATE, 'MM/DD/YYYY HH24:MI') AS "Date Completed",
ROUND(TO_NUMBER(work_request.COMPLETE_DATE - work_request.CREATE_DATE)) AS "Days to Complete",
CMS_USER.USER_NAME AS "Assigned To Id",
CMS_USER.USER_DESCRIPTION AS "Assigned To NAME",
deleted_cms_user.USER_NAME AS "Deleted Assigned To ID",
deleted_cms_user.USER_DESCRIPTION AS "Deleted Assigned To Name",
CASE
WHEN (DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"IsComplaint":') + Length('"IsComplaint":'), 1) - (DBMS_LOB.InStr(work_request_details, '"IsComplaint":') + Length('"IsComplaint":,')),
DBMS_LOB.InStr(work_request_details, '"IsComplaint":') + Length('"IsComplaint":')
)) = 'true' THEN 'Y'
ELSE 'N'
END AS "Is Complaint",
CASE
WHEN (DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"CallResultedInCustomerComplaint":"') + Length('"CallResultedInCustomerComplaint":"'), 1) - (DBMS_LOB.InStr(work_request_details, '"CallResultedInCustomerComplaint":"') + Length('"CallResultedInCustomerComplaint":"')),
DBMS_LOB.InStr(work_request_details, '"CallResultedInCustomerComplaint":"') + Length('"CallResultedInCustomerComplaint":"')
)) = 'Yes' THEN 'Y'
ELSE 'N'
END AS "Results in Complaint",
TO_CHAR(work_request_note.create_date, 'MM/DD/YYYY HH24:MI:SS') || ' ' || REPLACE(REPLACE(SUBSTR(work_request_note.note_text, 1, 10000), '(', ''), ')', '') || ' ' AS "Notes",
TO_CHAR(work_request_message.create_date, 'MM/DD/YYYY HH24:MI:SS') || ' ' || REPLACE(REPLACE(SUBSTR(work_request_message.message_text, 1, 10000), '(', ''), ')', '') || ' ' AS "Messages",
--SUBSTR(work_request_message.message_text, 1, 10000) AS "Messages",
work_request_status.STATUS AS "Status",
work_request.create_date As "Creation Date"
FROM work_request
LEFT JOIN work_request_note ON work_request.WORK_REQUEST_ID = work_request_note.WORK_REQUEST_ID
LEFT JOIN work_request_message ON work_request.WORK_REQUEST_ID = work_request_message.WORK_REQUEST_ID
LEFT JOIN work_request_type ON work_request.WORK_REQUEST_TYPE_ID = work_request_type.WORK_REQUEST_TYPE_ID
LEFT JOIN CMS_USER ON work_request.ASSIGNED_TO_USER_ID = CMS_USER.SEQ_USER_ID
LEFT JOIN deleted_cms_user ON work_request.ASSIGNED_TO_USER_ID = deleted_cms_user.USER_ID
LEFT JOIN COMPANY ON work_request.company_id = company.company_id AND company.corp_ID IN ('CB', 'CC')
LEFT JOIN work_request_status ON work_request.STATUS_ID = work_request_status.STATUS_ID
WHERE (work_request.corp_ID IN ('CB', 'CC') OR work_request.financial_institution_id = 'CO')
AND work_request_type.WORK_REQUEST_TYPE_NAME = 'Client Notification Exception Request'
AND TRUNC(work_request.create_date) BETWEEN TO_DATE('10/01/2023', 'MM/DD/YYYY') AND TO_DATE('11/01/2023', 'MM/DD/YYYY')
AND ((work_request.create_date > sysdate-30) AND ( work_request.STATUS_ID = 90))
OR work_request.STATUS_ID IN (0,10)
UNION
SELECT
CASE
WHEN Lpad(DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"'), 1) - (DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')),
DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')
), 5, 0) = '0Text'
THEN Lpad(TO_CHAR(COMPANY.COMPANY_ID), 5, 0)
ELSE Lpad(DBMS_LOB.SubStr(work_request_details,
DBMS_LOB.InStr(work_request_details, '"', DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"'), 1) - (DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')),
DBMS_LOB.InStr(work_request_details, '"CompanyNumber":"') + Length('"CompanyNumber":"')
), 5, 0)
END AS "COMPANY NUMBER",
COMPANY.COMPANY_NAME AS "COMPANY NAME",
work_request_number AS "Confirmation #",
work_request_type.WORK_REQUEST_TYPE_NAME AS "Request Type",
--work_request.WORK_REQUEST_DESC AS "Detail Description",
regexp_replace(work_request.WORK_REQUEST_DESC, '<.+?>') "Detail Description",
TO_CHAR(work_request.CREATE_DATE, 'MM/DD/YYYY HH24:MI') AS "Date Submitted",
TO_CHAR(work_request.COMPLETE_DATE, 'MM/DD/YYYY HH24:MI') AS "Date Completed",
ROUND(TO_NUMBER(work_request.COMPLETE_DATE - work_request.CREATE_DATE)) AS "Days to Complete",
CMS_USER.USER_NAME AS "Assigned To Id",
CMS_USER.USER_DESCRIPTION AS "Assigned To NAME",
deleted_cms_user.USER_NAME AS "Deleted Assigned To ID",
deleted_cms_user.USER_DESCRIPTION AS "Deleted Assigned To Name",
'N' AS "Is Complaint",
'N' AS "Results in Complaint",
TO_CHAR(work_request_note.create_date, 'MM/DD/YYYY HH24:MI:SS') || ' ' || REPLACE(REPLACE(SUBSTR(work_request_note.note_text, 1, 10000), '(', ''), ')', '') || ' ' AS "Notes",
TO_CHAR(work_request_message.create_date, 'MM/DD/YYYY HH24:MI:SS') || ' ' || REPLACE(REPLACE(SUBSTR(work_request_message.message_text, 1, 10000), '(', ''), ')', '') || ' ' AS "Messages",
--SUBSTR(work_request_message.message_text, 1, 10000) AS "Messages",
work_request_status.STATUS As "Status",
work_request.create_date As "Creation Date"
FROM work_request
LEFT JOIN work_request_note ON work_request.WORK_REQUEST_ID = work_request_note.WORK_REQUEST_ID
LEFT JOIN work_request_message ON work_request.WORK_REQUEST_ID = work_request_message.WORK_REQUEST_ID
LEFT JOIN work_request_type ON work_request.WORK_REQUEST_TYPE_ID = work_request_type.WORK_REQUEST_TYPE_ID
LEFT JOIN CMS_USER ON work_request.ASSIGNED_TO_USER_ID = CMS_USER.SEQ_USER_ID
LEFT JOIN deleted_cms_user ON work_request.ASSIGNED_TO_USER_ID = deleted_cms_user.USER_ID
LEFT JOIN COMPANY ON work_request.company_id = company.company_id AND company.corp_ID IN ('CB', 'CC')
LEFT JOIN work_request_status ON work_request.STATUS_ID = work_request_status.STATUS_ID
WHERE (work_request.corp_ID IN ('CB', 'CC') OR work_request.financial_institution_id = 'CO')
AND work_request_type.WORK_REQUEST_TYPE_NAME <> 'Client Notification Exception Request'
AND TRUNC(work_request.create_date) BETWEEN TO_DATE('10/01/2023', 'MM/DD/YYYY') AND TO_DATE('11/09/2023', 'MM/DD/YYYY')
AND ((work_request.create_date > sysdate-30) AND ( work_request.STATUS_ID = 90))
OR work_request.STATUS_ID IN (0,10)
),
NotesWithStatus AS (
SELECT
"COMPANY NUMBER",
"COMPANY NAME",
"Confirmation #",
"Request Type",
"Detail Description",
"Date Submitted",
"Date Completed",
"Days to Complete",
"Assigned To Id",
"Assigned To NAME",
"Deleted Assigned To ID",
"Deleted Assigned To Name",
"Is Complaint",
"Results in Complaint",
--MAX("Messages") AS "Messages", -- Use MAX to include Messages
LISTAGG("Messages", ' ' ON OVERFLOW TRUNCATE '...' ) WITHIN GROUP (ORDER BY ORDER BY TO_CHAR("Creation Date", 'MM/DD/YYYY HH24:MI:SS') DESC) AS "Messages",
LISTAGG("Notes", ' ' ON OVERFLOW TRUNCATE '...' ) WITHIN GROUP (ORDER BY ORDER BY TO_CHAR("Creation Date", 'MM/DD/YYYY HH24:MI:SS') DESC) AS "Notes",
"Status",
"Creation Date"
FROM CombinedNotes
GROUP BY
"COMPANY NUMBER",
"COMPANY NAME",
"Confirmation #",
"Request Type",
"Detail Description",
"Date Submitted",
"Date Completed",
"Days to Complete",
"Assigned To Id",
"Assigned To NAME",
"Deleted Assigned To ID",
"Deleted Assigned To Name",
"Is Complaint",
"Results in Complaint",
"Status",
"Creation Date"
)
SELECT
"COMPANY NUMBER",
"COMPANY NAME",
"Confirmation #",
"Request Type",
"Detail Description",
"Date Submitted",
"Date Completed",
"Days to Complete",
"Assigned To Id",
"Assigned To NAME",
"Deleted Assigned To ID",
"Deleted Assigned To Name",
"Is Complaint",
"Results in Complaint",
"Notes",
"Messages",
"Status"
FROM NotesWithStatus
ORDER BY TO_CHAR("Creation Date", 'MM/DD/YYYY HH24:MI:SS');
型
我发现注解列中的值按升序排列,如下所示“10/04/2023 13:27:55 Work Request was assigned to玛丽邦MBCorpCB 1 10/04/2023 13:27:57工作申请由玛丽邦MBCorpCB 1完成2023年10月11日08:58:59工作请求被重新分配给莫纳Lash f2326 COcorp 2023年10月11日08:59:01工作请求已由莫纳Lash f2326 COcorp重置为新“
所需值应按如下方式降序:“10/11/2023 08:59:01 Work Request was reset to new by莫纳Lash f2326 COcorp 08:58:59 Work Request was reassigned to莫纳Lash f2326 COcorp 10/04/2023 13:27:57 Work Request was completed by玛丽邦MBCorpCB 1 10/04/2023 13:27:55 Work Request was assigned to玛丽邦MBCorpCB 1”
1条答案
按热度按时间laik7k3q1#
对日期
YYYY-MM-DD HH24:MI:SS
(可以作为字符串排序)使用ISO8601格式,或者将日期作为日期传递,而不是子查询因子子句(WITH
子句)中的格式化字符串。如果你传递
MM/DD/YYYY HH24:MI:SS
的字符串,并试图对它们进行排序,那么你将按月、日和年进行排序。因此,不要在子查询factoring子句中将日期格式化为字符串,只需将它们保留为日期(并且不要将消息和注解日期连接到文本中),然后在使用日期值对查询进行排序之后进行格式化:
字符串