SQL如何按列名过滤

问题描述 投票:0回答:1

我有这个代码:

https://orchardfruit-my.sharepoint.com/:u:/g/personal/bi_analyst_orchard_es/ERs8cgukEdJGg1H6NonxxwUBumAXMAnH9Twujlsr7_gEYQ?e=08PN3O

一开始我有这个,我获得了“FamiliaOrigen”专栏

select
    DISTINCT
             PA.Serie + '/' + CONVERT(varchar,
    PA.Numero) Partida,
    PA.Id_Cultivo
    --Informacion Familia Origen
               ,
    (
    select 
        _FA.Nombre as Familia
        from
            FamiliasArticulo _FA
        inner join Articulos _A on
            _A.Id_Familia = _FA.Id
            and _A.Id = APNS.Id_Articulo
        where _FA.Id_FamiliaSuperior is not null
    ) as FamiliaOrigen

决赛时:

(
    select 
        _FA.Nombre as Familia
    from
        FamiliasArticulo _FA
    inner join Articulos _A on
        _A.Id_Familia = _FA.Id
        and _A.Id = APNS.Id_Articulo
        where _FA.Id_FamiliaSuperior is not null
) is not null

你知道我如何调用列的名称并避免为此替换太多代码吗:

FamiliaOrigen 不为空。

sql sql-server
1个回答
0
投票

您可以使用

HAVING
简化 WHERE 子句中的子查询。请参阅 https://www.w3schools.com/sql/sql_having.asp 了解更多信息。

在您的代码中,您可以使用:

inner join Partidas PA ON
    PA.Id = APNS.Id_Partida
    and PA.Id_PartidaSectorAgrario is not null
    WHERE PA.numero = 18598
    HAVING FamiliaOrigen is not null
© www.soinside.com 2019 - 2024. All rights reserved.