[英]Can I pass SQL queries and their subqueries without creating separate tables?
給定以下代碼,是否可以在不創建表的情況下將查詢及其子查詢傳遞給稍后的計算(具有一些算術的 pivot 表)?
表LOGS
和USERS
僅共享字段USERNAME
。
(SELECT z.* FROM (SELECT
L.DATE,
UPPER(L.USERNAME) AS USERNAME,
L.BUSINESS,
(SELECT name FROM UID where UID_code= L.transfer) AS newname,
L.REASON
FROM LOGS L
WHERE L.APPLICATION = 'A'
AND L.BUSINESS IN ('X','Y','Z')
AND L.DATE BETWEEN TO_DATE('1/1/2019 00:00:01', 'MM/DD/YYYY HH24:MI:SS') AND TO_DATE('2/1/2019 23:59:59','MM/DD/YYYY HH24:MI:SS'))
AND UPPER(L.USERNAME) IN (SELECT UPPER(U.USERNAME) FROM USERS U WHERE TEAM='DATA'))z
WHERE z.REASON ='N/A')
) AS EDITS; /*Alias needed to pass this query?*/
或者我需要從
CREATE TABLE EDITS_ONLY
SELECT DATE, USERNAME, BUSINESS
FROM
或者
SELECT DATE,USERNAME,BUSINESS
INTO EDITS_ONLY
FROM
嘗試修改除我的嵌套 SELECT 查詢以外的任何內容會導致 SQL 語句錯誤結束。 (ORA-00933) 在所需的 output 之前,需要對 3 塊這樣的代碼進行過濾並相互比較。 我可以簡單地為外部查詢分配一個名稱嗎? 我的替代方案是什么? 謝謝。
我不太明白您現有查詢的含義,但您可以將子查詢“保存”為 CTE(公用表表達式)並命名它們。 在以后的查詢中,您可以像引用典型表一樣引用它們。 例如:
with
z (username) as ( -- CTE named "z"
SELECT UPPER(U.USERNAME) FROM USERS U WHERE TEAM = 'DATA'
),
edits (dt, username, business, newname, reason) as ( -- CTE named "edits"
SELECT
L.DATE,
UPPER(L.USERNAME),
L.BUSINESS,
(SELECT name FROM UID where UID_code = L.transfer),
L.REASON
FROM LOGS L
WHERE L.APPLICATION = 'A'
AND L.BUSINESS IN ('X','Y','Z')
AND L.DATE BETWEEN TO_DATE('1/1/2019 00:00:01', 'MM/DD/YYYY HH24:MI:SS')
AND TO_DATE('2/1/2019 23:59:59','MM/DD/YYYY HH24:MI:SS')
AND UPPER(L.USERNAME) IN (SELECT * from z WHERE REASON = 'N/A')
)
select * from edits
這可能會為您的查詢提供一個起點。 你的格式不正確,所以我不能很好地理解它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.