我的存储过程中有三个参数。对于其中的两个,我执行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并根据它查找字段also...the连接超时需要很长时间。因此,我尝试在两个字段的MaxDate上合并,并使用@AllDate as参数检查选定的日期。希望它能更清楚一些:)
发布于 2013-03-01 12:55:38
如果您的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
,因为这样您就可以返回一个表,您可以在以后的SELECT
中使用它。
CREATE FUNCTION dbo.GetMaxDates()
RETURNS @MaxDates TABLE
(
MaxDate datetime
)
AS
BEGIN
INSERT INTO @DateTable (MaxDate)
select max(Date) as Maxdate from Table1
union
select max(Date) as Maxdate from Table2
RETURN
END
发布于 2013-03-01 12:49:10
Union用于对数据集进行“联合”。
你可以这样做:
select @maxdate1 as Maxdate
union
select @maxdate2
尽管您不需要所有这些,因为您可以执行以下操作
select max(Date) as Maxdate from Table1
union
select max(Date) as Maxdate from Table2
在标量上,不能使用union。
发布于 2013-03-01 12:49:22
你就不能这样写吗:
SELECT @MaxDate1 AS MaxDate1, @MaxDate2 AS MaxDate2
https://stackoverflow.com/questions/15158120
复制相似问题