我有一個生成以下結果集的查詢:
ID (text) VAL
1 A
2 B
3 C
我想從結果集 ID 生成一個 WHERE 子句:
where id in ('1','2','3')
使用 Oracle,我可以使用以下查詢生成 WHERE 子句:
with a as (
<my_query>
)
select 'where id in ('
|| listagg(id, ',') within group(order by id)
|| ')' as where_clause
from a
有沒有辦法使用 SQL Server 做同樣的事情?
相關:Oracle:從結果集 ID 生成 WHERE 子句?
uj5u.com熱心網友回復:
試試這個。
with a as (
<my_query>
)
SELECT 'WHERE id IN ('
STRING_AGG(id, ',') WITHIN GROUP(ORDER BY id)
')' as where_clause
FROM a
然后你會得到 WHERE id IN (1,2,3)
如果你想得到WHERE id IN ('1','2','3')
那么你可以改變如下
SELECT 'WHERE id IN ('''
STRING_AGG(id, ''',''') WITHIN GROUP(ORDER BY id)
''')' as where_clause
FROM a
uj5u.com熱心網友回復:
你可以使用普通的 IN
with a as (
<my_query>
),
b as (
<Other Query>
)
select *
from b
where b.id in (
select a.id
from a
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366947.html
標籤:sql-server sql-server-2016 列表
