SQL Select 2 列作为单行列表

SQL Select 2 columns as list from single row

我有一个包含 [From], [To] 列的 table。我需要 select 这些列作为一个列表,我是这样做的:

SELECT [From] FROM [TableX] WHERE (...)
UNION
SELECT [To] FROM [TableX] WHERE (...)

问题是我不想重复 WHERE (...) 条件,因为它很长。有没有办法避免这种重复?

在派生的 table 中执行 UNION,并有一个共同的 WHERE 子句。

select *
from
(
    SELECT [From] FROM [TableX] 
    UNION
    SELECT [To] FROM [TableX]
)
WHERE (...)

使用 CTE 防止重复您的 WHERE 条件:

;WITH [CTE_Criteria] AS (
    SELECT [From], [To]
    FROM [TableX]
    WHERE (...)
)
SELECT [From] FROM [CTE_Criteria]
UNION
SELECT [To] FROM [CTE_Criteria];