2017-06-12 22 views
-1

従業員の出席が記録されたテーブルがあります。我々は現在の日だけを挿入する。私は記録された出席日とともに月のすべての日付を表示したい。記録されていない日は欠席と表示されます。助けが必要。 ここにテーブル従業員の出席があります。我々はこのテーブルに現在の日のみを挿入することに注意してください。不在および休日はこのテーブルに挿入されません。SQLクエリでヘルプが必要

`CREATE TABLE [dbo].[EmployeeAttendance](
[CompanyCode] [int] NOT NULL, 
[BranchCode] [int] NOT NULL, 
[TransactionDate] [datetime] NOT NULL, 
[EmployeeCode] [int] NOT NULL, 
[AttendanceCount] [int] NOT NULL, 
[ShiftCode] [int] NOT NULL, 
[ScheduledTimeIn] [datetime] NULL, 
[ScheduledTimeOut] [datetime] NULL, 
[BreakStartTime] [datetime] NULL, 
[BreakEndTime] [datetime] NULL, 
[FlexiLateTime] [int] NULL, 
[FlexiEarlyTime] [int] NULL, 
[RecordedTimeIn] [datetime] NULL, 
[RecordedTimeOut] [datetime] NULL, 
[RemarksIn] [varchar](500) NULL, 
[RemarksOut] [varchar](500) NULL, 
[AddByUserId] [int] NULL, 
[AddDateTimeIn] [datetime] NULL, 
[AddDateTimeOut] [datetime] NULL, 
CONSTRAINT [PK_EmployeeAttendance_1] PRIMARY KEY CLUSTERED 
(
[CompanyCode] ASC, 
[BranchCode] ASC, 
[TransactionDate] ASC, 
[EmployeeCode] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY]` 
+3

テーブル構造を表示してください。どのようなクエリを試しましたか?予想される出力は何ですか? –

+1

ダミーデータまたは疑似データを提供して、他の人がテーブル構造とデータを分析するのを助けることができます。 – user75ponic

答えて

0

まず、月のすべての日を含む「表」を作成する必要があります。その後、記録された出席データをその日付の範囲に残しました。今

SELECT d.date, a.* 
FROM [dates] AS d -- this is a set of rows, one per needed date 
LEFT JOIN EmployeeAttendance AS a ON d.[date] = a.[RecordedTimeIn] 

、使用されているデータベースに応じて、あなたは様々な方法(例えば、再帰共通テーブル式)の様々な必要な日付の行を生成することができます。

方法に関係なく、日付ごとに1つの行が最初のステップであり、これが「元」テーブルになります。

+0

MySQLの例https://stackoverflow.com/questions/25804531/mysql-group-by-date-and-count-including-missing-dates/25829518#25829518 –