1

ストアドプロシージャには3つのパラメータがあります。それらのうちの2つで、SELECTステートメントを実行して特定の値を取得します。3番目のパラメーターを使用して、最初の2つのパラメーターでUNIONを作成します。基本的にこれはちょっとそれがどのように見えるかです。

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

これが私が望むものですが、この場合のクエリの書き方がわかりません。

SET @AllDate = @MaxDate1 UNION @MaxDate2

ヘルプ、または提案をありがとう。

たくさんのマイナスを受け取ったので、どうやって全部をやろうとしたのかを説明しようと思います。最初に2つの異なるテーブルから最新の日付を検索するストアドプロシージャがあります。日付を調べた後、ユーザーが選択した日付がデータベースの日付よりも大きい場合はエラーを返す必要があることを示すIF ELSEステートメントを作成しますが、日付がMaxDateよりも小さい場合は、すべての列と行を作成します。選択した日付までに返送する必要があります。ただし、日付は動的であるため、クエリは毎回それらを検索します。したがって、MaxDateをチェックし、それに応じてフィールドも検索するのに時間がかかります...接続がタイムアウトします。そのため、2つのフィールドのMaxDateを結合し、@AllDateをパラメーターとして使用して選択した日付にチェックしようとしました。もう少し明確になることを願っています:)

4

3 に答える 3

2

ユニオンは、データセットに「ユニオン」するために使用されます。

あなたは次のようなことをすることができます:

select @maxdate1 as Maxdate
union 
select @maxdate2

あなたは次のようなことをすることができるので、あなたはこれらすべてを必要としませんが

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

スカラーでは、ユニオンは使用できません。

于 2013-03-01T12:49:10.053 に答える
2

PRCのテーブル構造に2つの日付が必要な場合は、次のようなテーブルを使用してみませんか。

DECLARE @DateTable TABLE(
MaxDate datetime)

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

他の手順または後で使用するために2つの日付を返す必要がある場合は、後で使用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-01T12:55:38.473 に答える
1

あなたはこれを書くことはできません:

SELECT @MaxDate1 AS MaxDate1, @MaxDate2 AS MaxDate2
于 2013-03-01T12:49:21.580 に答える