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