简体   繁体   English

如何使用一个查询的结果作为另一个查询的来源? (T-SQL)

[英]How do I use the results of one query as a source for another query? (T-SQL)

I am trying to take the results of this query and return the same results except do a lookup to another table to get a value in place of my BK values. 我正在尝试获取该查询的结果并返回相同的结果,除了对另一个表进行查找以获取代替我的BK值的值。

SELECT 
Case when S.SCENARIO_SK is null then -2
when DS.SCENARIO_SK is null then -1
else DS.SCENARIO_SK
end SCENARIO_SK,

GLP.DATE_SK,

CASE
WHEN S.Q_ACCT_STR = GLEM.Q_ACCT_STR
THEN
GLA.ACCOUNT_BK
ELSE
LEFT(S.Q_ACCT_STR,5)
END ACCOUNT,

CASE
WHEN S.Q_ACCT_STR = GLEM.Q_ACCT_STR
THEN
GLO.ORG_BK
ELSE
RIGHT(S.Q_ACCT_STR,5)
END ORG,

S.Q_ACCT_STR,
S.GL_PER_AMT,
S.GL_PER_BAL,
S.Q_YTD_AMT,
S.DM_CREATE_DATE,
S.DM_AUDIT_KEY

FROM STG_GL_SUMMARY S
LEFT OUTER JOIN GL_PER_PARMS GLP ON GLP.GLP_AUTO_KEY = S.GLP_AUTO_KEY
LEFT OUTER JOIN D_GL_SCENARIO DS ON DS.SCENARIO_SK =S.SCENARIO_SK
LEFT OUTER JOIN STG_GL_EXCEPTION_MAP GLEM ON GLEM.Q_ACCT_STR = S.Q_ACCT_STR
LEFT OUTER JOIN D_GL_ACCOUNT GLA ON GLA.ACCOUNT_BK = GLEM.ACCOUNT_BK
LEFT OUTER JOIN D_GL_ORG GLO ON GLO.ORG_BK = GLEM.ORG_BK

From the above query, I would like to perform the following: 从上面的查询,我想执行以下操作:

SELECT GLA.ACCOUNT_SK
FROM D_GL_ACCOUNT GLA
WHERE QUERY(ACCOUNT) = GLA.ACCOUNT.BK

SELECT GLO.ORG_SK
FROM D_GL_ORG GLO
WHERE QUERY(ACCOUNT) = GLO.ORG.BK

My final result will be all fields from both queries. 我的最终结果将是两个查询的所有字段。

Thank you. 谢谢。 I am relatively new to T_SQL. 我是T_SQL的新手。

You may use what is called a derived table. 您可以使用所谓的派生表。 Simply wrap the inner query with braces, assign an alias and perform a select to this. 只需将内部查询用大括号括起来,指定别名并对此进行选择。 Example: 例:

select
    tmp.value
from
    (select
        some_value as value
    from
        some_table
    ) tmp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM