关于参数SQL的UNION

时间:2013-03-01 12:45:34

标签: sql sql-server sql-server-2008 tsql

我的存储过程中有三个参数。在其中两个中,我执行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作为参数来检查所选日期。希望它更清楚:)

3 个答案:

答案 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