SQL - 如何使用DECLARE语句在SQL查询中选择其他参数

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

我在Crystal Reports中使用此SQL的输出。我创建了一个存储过程,因为我在查询中有一个DECLARE语句。

我需要 - SELECT PP.PLPLANID - 作为参数,因为我在查询中有DECLARE它似乎阻止我选择其他参数。我需要做什么?

这是我到目前为止 - 它正在创建一个我想要的行和列,但我现在需要添加其他列,如PP.PLPLANID等。

AS
BEGIN
    DECLARE @MultiZoneOverlays VARCHAR (2000)

    SET NOCOUNT ON

    SELECT @MultiZoneOverlays = COALESCE(@MultiZoneOverlays +', ', '') + Z.NAME
    FROM PLPLAN PP
    JOIN PLPLANPARCEL PLP ON PP.PLPLANID = PLP.PLPLANID
    JOIN PARCEL P ON PLP.PARCELID = P.PARCELID
    JOIN PLPLANZONE PLZ ON PP.PLPLANID = PLZ.PLPLANID
    JOIN ZONE Z ON PLZ.ZONEID = Z.ZONEID
    WHERE "PP"."PLPLANID" = @PLPLANID
      AND PLP.Main = '1'
      AND PLZ.MAIN = '0'

    SELECT @MultiZoneOverlays AS MultiZoneOverlaysList
END
tsql stored-procedures coalesce declare
1个回答
0
投票

不是说它是最好的方法,但是,为了学习,在当前程序中按照模型添加更多变量,你可以这样做:

AS
BEGIN
    DECLARE @MultiZoneOverlays VARCHAR (2000)
    , @Variable2 varchar(2000)
    , @Variable3 varchar(2000)

    SET NOCOUNT ON

    SELECT @MultiZoneOverlays = COALESCE(@MultiZoneOverlays +', ', '') + Z.NAME
    , @Variable2 = Column2
    , @Variable3 = Column3
    FROM PLPLAN PP
    JOIN PLPLANPARCEL PLP ON PP.PLPLANID = PLP.PLPLANID
    JOIN PARCEL P ON PLP.PARCELID = P.PARCELID
    JOIN PLPLANZONE PLZ ON PP.PLPLANID = PLZ.PLPLANID
    JOIN ZONE Z ON PLZ.ZONEID = Z.ZONEID
    WHERE "PP"."PLPLANID" = @PLPLANID
      AND PLP.Main = '1'
      AND PLZ.MAIN = '0'

    SELECT @MultiZoneOverlays AS MultiZoneOverlaysList
    ,      @Variable2 AS Var2
    ,      @Variable3 AS Var3
END
© www.soinside.com 2019 - 2024. All rights reserved.