UNION sur les parameters SQL

J'ai trois parameters dans ma procédure stockée. Sur deux d'entre eux, j'exécute une instruction SELECT pour récupérer une valeur spécifique. Je veux utiliser le troisième paramètre pour faire un UNION sur les deux premiers parameters. Fondamentalement, c'est comme ça que ça ressemble un peu.

DECLARE @MaxDate1 DECLARE @MaxDate2 DECLARE @AllDate SELECT @MaxDate1 = MAX(Date) FROM Table1 SELECT @MaxDate2 = MAX(Date) FROM Table2 

C'est ce que je voudrais cependant je ne peux pas comprendre comment écrire la requête dans ce cas.

 SET @AllDate = @MaxDate1 UNION @MaxDate2 

Merci pour l'aide, ou des suggestions.

Eh bien, puisque j'ai reçu beaucoup d'inconvénients, je vais essayer d'expliquer comment j'ai essayé de faire le tout. J'ai une procédure stockée où je search d'abord les dernières dates de deux tables différentes. Après avoir recherché les dates, je crée une instruction IF ELSE indiquant que si la date sélectionnée par l'user est plus grande que celle de la database, elle doit renvoyer une erreur, mais si la date est inférieure à MaxDate, toutes les colonnes et lignes devrait être returnné jusqu'à la date sélectionnée. Cependant, les dates sont dynamics et la requête les search à chaque fois. Par conséquent, il faut beaucoup de time pour vérifier le MaxDate et d'après cela pour searchr les champs aussi … la connection expire. Donc j'essayais de faire une union sur le MaxDate des deux champs, et d'utiliser le paramètre @AllDate comme paramètre à vérifier à la date sélectionnée. J'espère que c'est un peu plus clair 🙂

Si vous avez besoin des deux dates dans une structure de table pour votre PRC, alors pourquoi n'utilisez-vous pas une table, comme ceci:

 DECLARE @DateTable TABLE( MaxDate datetime) INSERT INTO @DateTable (MaxDate) select max(Date) as Maxdate from Table1 union select max(Date) as Maxdate from Table2 

Si vous devez renvoyer les deux dates pour une autre procédure ou quelque chose pour une utilisation ultérieure, je recommand d'utiliser une TABLE-VALUED FUNCTION , car alors vous pouvez returnner une table, ce que vous pouvez utiliser pour votre SELECT plus tard.

 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 

Union est utilisé pour "union" à des sets de données.

vous pouvez faire quelque chose comme:

 select @maxdate1 as Maxdate union select @maxdate2 

Bien que vous n'ayez pas besoin de tout cela, vous pouvez faire quelque chose comme

 select max(Date) as Maxdate from Table1 union select max(Date) as Maxdate from Table2 

sur un scalaire, vous ne pouvez pas utiliser union.

Tu ne peux pas écrire ça:

 SELECT @MaxDate1 AS MaxDate1, @MaxDate2 AS MaxDate2