我的存储过程中有三个参数。在其中两个中,我执行SELECT语句来检索特定值。我想使用第三个参数在前两个参数上创建一个UNION。 基本上这就是它看起来有点像。
DECLARE @MaxDate1
DECLARE @MaxDate2
DECLARE @AllDate
SELECT @MaxDate1 = MAX(Date) FROM Table1
SELECT @MaxDate2 = MAX(Date) FROM Table2
这是我想要的,但在这种情况下我无法弄清楚如何编写查询。
SET @AllDate = @MaxDate1 UNION @MaxDate2
感谢您的帮助或建议。
好吧,因为我收到了很多弊端,我会试着解释我是怎么做的。我有一个存储过程,首先我从两个不同的表中查找最新日期。在查找日期后,我创建了一个IF ELSE语句,声明如果用户选择的日期大于数据库中的日期,那么它应该返回错误,但是如果日期小于MaxDate那么所有列和行应该返回到选定的日期。但是日期是动态的,因此查询每次都会查找它们。因此,检查MaxDate需要很长时间,并根据这个来查找字段......连接超时。所以我试图在两个字段的MaxDate上建立联合,并使用@AllDate作为参数来检查所选日期。希望它更清楚:)
答案 0 :(得分:2)
Union已习惯于" union"到数据集。
你可以这样做:
select @maxdate1 as Maxdate
union
select @maxdate2
虽然您不需要所有这些,因为您可以执行类似
的操作select max(Date) as Maxdate from Table1
union
select max(Date) as Maxdate from Table2
在标量上,你不能使用union。
答案 1 :(得分:2)
如果您需要PRC的表结构中的两个日期,那么为什么不使用表格,如下所示:
DECLARE @DateTable TABLE(
MaxDate datetime)
INSERT INTO @DateTable (MaxDate)
select max(Date) as Maxdate from Table1
union
select max(Date) as Maxdate from Table2
如果您需要为其他程序返回两个日期以供日后使用,我建议您使用TABLE-VALUED FUNCTION
,因为这样您就可以返回一张表,可以用于{{1稍后。
SELECT
答案 2 :(得分:1)
你不能写这个:
SELECT @MaxDate1 AS MaxDate1, @MaxDate2 AS MaxDate2