3

別のテーブルの日付が今日より少なくとも6か月前の場合、あるテーブルからいくつかのデータを選択したいと思います。次のようなことを試してみました 。6か月を超える場合はSQLServerからレコードを選択します が、エラーが発生します。サブクエリが複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
これを承認する私の方法は次のとおりです。

SELECT FCIF, [Date], [Desc]
FROM tblFCIF
WHERE tblFCIF.FCIF =
(SELECT FCIFSignOff.FCIF
FROM FCIFSignOff
WHERE ID='12'
AND (DateDiff(month,SignOffDate,GetDate()) > 0) )

したがって、最後の行がないこのコードは、IDが12のすべてを選択します。6か月以上前のすべてを取得する必要があります。

DATEDIFF(datepart,startdate,enddate)

'month'が時間帯にある場合、月の差を返します。

4

2 に答える 2

16

行の代わりにDateDiff、次を使用します。

AND (DateAdd(MM, -6, GetDate()) > SignOffDate)
于 2012-10-09T22:35:38.857 に答える
0

あなたのスキーマがどのように見えるかわかりません。INただし、演​​算子ではなく、演算子が必要であると推測します=

SELECT FCIF, [Date], [Desc]
FROM tblFCIF
WHERE tblFCIF.FCIF IN
(SELECT FCIFSignOff.FCIF
FROM FCIFSignOff
WHERE ID='12'
AND (DateDiff(month,SignOffDate,GetDate()) > 0) )
于 2012-10-09T22:36:52.943 に答える