1

私は2つのテーブルを使用しています。最初のテーブルは、データベースに表示されるテーブル2のデータではありません。

元。 *最初のテーブル「filesTA」 *

EmpNo | ChkDate
00001 | 2012-10-01 00:00:00.000
00001 | 2012-10-02 00:00:00.000
00001 | 2012-10-03 00:00:00.000
00001 | 2012-10-04 00:00:00.000
00001 | 2012-10-05 00:00:00.000

「給料日2」

sEmpNo | sDate
00001 | 2012-10-01 00:00:00.000
00001 | 2012-10-02 00:00:00.000

2012-10-01 から 2012-10-05 の間の日時を選択すると

出力が必要です:

sEmpNo | sDate
00001 | 2012-10-03 00:00:00.000
00001 | 2012-10-04 00:00:00.000
00001 | 2012-10-05 00:00:00.000

このコード:

SELECT tf.EmpNo,tf.ChkDate
FROM filesTA tf 
WHERE tf.ChkDate NOT IN(
SELECT sd2.sDate
FROM SalaryDay2 sd2
WHERE Convert(nvarchar(10),sd2.sDate,126) Between '2012-10-01' and '2012-10-05'
)

私を助けてください。お時間をありがとうございました。:)

4

4 に答える 4

1

私があなたの質問を誤解していない限り、次のようなものが必要です。

SELECT tf.EmpNo,tf.ChkDate
FROM filesTA tf 
LEFT JOIN SalaryDay2 sd2 ON (sd2.EmpNo = tf.EmpNo AND sd2.ChkDate = tf.ChkDate)
WHERE sd2.EmpNo IS NULL  --you may want to add other condition as well

(SalaryDay2 に対応するレコードがない fileTA のレコード)

于 2012-12-10T17:25:02.530 に答える
0

BETWEEN包括的なものであり、基本的には

x BETWEEN a AND b

と同じ

(x >= a) AND (x <= b)

私があなたのサンプルを正しく読んでいるなら、非包括的バージョンが必要です。これは難しい方法で書き出す必要があります。

yourdate > '2012-10-01' AND yourdate <= '2012-10-05'
         ^-- note: <, not <=         
于 2012-12-10T17:24:41.797 に答える
0

EXCEPT句を使用する

SELECT EmpNo, ChkDate
FROM filesTA
EXCEPT
SELECT sEmpNo, sDate
FROM SalaryDay2
WHERE sDate BETWEEN '20121001' and '20121005' 

SQLFiddle のデモ

于 2012-12-11T09:41:15.483 に答える
0

NOT EXISTSこの目的で使用できます。結合の基準に基づいて、2 番目のテーブルに存在しない行を削除する必要があります。

DECLARE @FirstDate DATE = '2012-10-01'
DECLARE @SecondDate DATE = '2012-10-05'
SELECT  *
FROM    FilesTA
WHERE   NOT EXISTS ( SELECT 1
                     FROM   SalaryDay2
                     WHERE  SalaryDay2.sDate = FilesTA.ChkDate 
                     -- If you want to check per EmpNo as well uncomment this line:
                     -- AND SalaryDay2.sEmpNo = FilesTA.EmpNo
)
        AND FilesTA.ChkDate BETWEEN @FirstDate
                            AND     @SecondDate
于 2012-12-11T09:50:56.007 に答える