簡體   English   中英

我可以通過 SQL 查詢及其子查詢而不創建單獨的表嗎?

[英]Can I pass SQL queries and their subqueries without creating separate tables?

給定以下代碼,是否可以在不創建表的情況下將查詢及其子查詢傳遞給稍后的計算(具有一些算術的 pivot 表)?

LOGSUSERS僅共享字段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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM