2016-10-20 9 views
1

私はEmpというテーブルを持っています。その中に、Name、LastWorkingDay、LeaveValue、DateofReturnの3つの列があります。私のテーブルは、2016年10月10日「の間の値を返す必要があります 日付間の名前を検索するSqlクエリ

Emp

現在の完全な週の間で最終営業日とDateofReturnが下がる

  • :私はそのようなことを、クエリを作成したいです'と' 2016-10-16 '、つまり今週の一週間です。したがって、最初の2レコードだけを削除し、最後の3レコードを表示する必要があります。

    SELECT [Name] 
        ,[Last_Working_Day] 
        ,[Date_of_Return] 
        ,[LeaveValue] 
        ,NewWeekStatus 
        FROM [Emp] 
        INNER JOIN [Date] 
        ON [Emp].Last_Working_Day = [Date].FullDate 
    
        WHERE [Date].NewWeekStatus = 'Current Full Week' 
    

    どのようにすればいいですか?

+0

http://stackoverflow.com/a/23060884/842112 –

+1

'NewWeekStatus'何ですか? –

+0

FullDateテーブルの列には、現在の完全な週の日付が含まれています。 10-10-16から16-10-16 – Shivang

答えて

1

まず、現在の最初と最後の日を以下のように調べる必要があります。

Declare @StartWeek AS datetime, @EndWeek AS datetime 
select @StartWeek=  DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0) 
select @EndWeek = DATEADD(week, DATEDIFF(day, 0, getdate())/7, 6) 

これらの2つの日付をクエリに使用できます。

SELECT [Name] 
    ,[Last_Working_Day] 
    ,[Date_of_Return] 
    ,[LeaveValue] 
    ,NewWeekStatus 
    FROM [Emp] 
    INNER JOIN [Date] 
    ON [Emp].Last_Working_Day = [Date].FullDate 
    WHERE [Date].NewWeekStatus = 'Current Full Week' 
    AND [Emp].Last_Working_Day BETWEEN @StartWeek AND @EndWeek 
    AND [Emp].Date_of_Return BETWEEN @StartWeek AND @EndWeek 

ただし、あなたの欲求の出力は、先週の週を考慮する必要があります。

+0

おかげさまでビッキー。できます :) – Shivang

0

これを見てみましょう:

SELECT [Name] 
    ,[Last_Working_Day] 
    ,[Date_of_Return] 
    ,[LeaveValue] 
    ,NewWeekStatus 
    FROM [Emp] 
    INNER JOIN [Date] 
    ON [Emp].Last_Working_Day = [Date].FullDate 
    WHERE [Date].NewWeekStatus = 'Current Full Week' and (Date_of_return>='2016-10-10' and Date_of_return<='2016-10-16') 
関連する問題