-2

私は2つのテーブルを持っています:

HolidayEmpLog

に存在しない日付のみを選択する必要がありますEmplog(これらの日は平日であり、休日のみとは異なります)

たとえば、この日はログに記録していません:2012年12月18日。

したがって、出力は2012年12月18日になります

4

2 に答える 2

0

あなたはこのようなものを意味します

select column1 
from thistable 
left join otherTable on 
thisTable.column1 = otherTable.column1 
Where thisTable.column1 IS NULL
于 2012-12-18T03:15:53.663 に答える
0

質問から、私は次のことを仮定します:

  1. 従業員が存在したすべての日付の日付スタンプを含むEmpLogテーブルがあります。
  2. 週末または休日のいずれかの日付のリストを含む休日テーブルがあります
  3. 営業日だったすべての日付を確認する必要がありますが、特定の従業員はログに記録されませんでした

これらの仮定が正しければ、このコードは機能します。

--Declare variables to hold date values 
DECLARE @MyDate    DATETIME, 
        @FirstDate DATETIME, 
        @LastDate  DATETIME 

SELECT @MyDate = Getdate() -- OR Pass whatever date you want 

--Populate variable with values of first date and last date of the given month 
SELECT @FirstDate = CONVERT(VARCHAR(25), Dateadd(dd, -( Day(@mydate) - 1 ), 
                                         @mydate), 
                           101), 
       @LastDate = CONVERT(VARCHAR(25), Dateadd(dd, -( Day( 
                                        Dateadd(mm, 1, @mydate)) ), 
                                                    Dateadd(mm, 1, @mydate)), 
                   101) 

--Declare table variable to hold date values for the entire month 
DECLARE @AllDates TABLE 
  ( 
     datevalue DATETIME 
  ) 
DECLARE @Lastday INT 

SET @Lastday = Datepart(d, @LastDate) 

DECLARE @Days INT 

SET @Days = 1 

-- Populate table variable with all days of the month 
WHILE @Days <= @Lastday 
  BEGIN 
      INSERT INTO @AllDates 
      SELECT @FirstDate 

      SET @FirstDate = Dateadd(d, 1, @FirstDate) 
      SET @Days = @Days + 1 
  END 

--Query joining the EmpLog table and Holiday Table, using Left Outer Join  
SELECT AD.datevalue 
FROM   @AllDates AD 
       LEFT OUTER JOIN emplog EL 
                    ON AD.datevalue = EL.datevalue 
       LEFT OUTER JOIN holiday H 
                    ON AD.datevalue = H.datevalue 
-- Where clause to return only dates that do not appear in EmpLog or Holiday tables 
WHERE  EL.datevalue IS NULL 
       AND H.datevalue IS NULL  

お役に立てれば。

ラジャン

于 2012-12-18T05:22:32.793 に答える