0

datetime日時のみを選択したときに表示する必要があります。私はSQLを実行しようとしていますが、すべてを表示しているためdatetimeです。

Emp:

EmpNo   fullName
00001   Midna
00002   Klog
00003   Porla
00004   Seka
00005   Mila

tFile:

EmpNo   cDate                     cTime
00001   2012-10-29 00:00:00.000   2012-10-29 07:52:00.000
00001   2012-10-29 00:00:00.000   2012-10-29 19:00:00.000
00002   2012-10-29 00:00:00.000   2012-10-29 07:40:00.000
00002   2012-10-29 00:00:00.000   2012-10-29 19:32:00.000
00005   2012-10-29 00:00:00.000   2012-10-29 07:58:00.000
00005   2012-10-29 00:00:00.000   2012-10-29 18:35:00.000

このコード

SELECT 
   em.EmpNo as 'EmpNo', 
   case 
       when tf.cDate <> null then tf.cDate 
            else coalesce(tf.cDate, '2012-10-29') 
   end as 'cDate', 
   Min(tf.cTime) as 'timeIn', 
   Max(tf.cTime) as 'timeOut'
FROM 
   tFile tf 
Full Outer join 
   Emp em On tf.EmpNo = em.EmpNo
Group By 
   em.EmpNo,tf.cDate
Order By 
   'EmpNo'

この結果を返します:

EmpNo   cDate                     timeIn                     timeOut
-------------------------------------------------------------------------------------
00001   2012-10-21 00:00:00.000   2012-10-21 07:22:00.000    2012-10-21 17:35:00.000
00001   2012-10-24 00:00:00.000   2012-10-24 07:30:00.000    2012-10-24 19:00:00.000
00001   2012-10-29 00:00:00.000   2012-10-29 07:52:00.000    2012-10-29 19:00:00.000
00002   2012-10-25 00:00:00.000   2012-10-25 07:58:00.000    2012-10-25 18:35:00.000
00002   2012-10-22 00:00:00.000   2012-10-22 08:04:00.000    2012-10-22 17:55:00.000
00002   2012-10-24 00:00:00.000   2012-10-24 08:00:00.000    2012-10-24 18:45:00.000
00002   2012-10-29 00:00:00.000   2012-10-29 07:40:00.000    2012-10-29 19:32:00.000
00003   2012-10-29 00:00:00.000   NULL                       NULL
00004   2012-10-29 00:00:00.000   NULL                       NULL
00005   2012-10-28 00:00:00.000   2012-10-28 07:30:00.000    2012-10-28 19:20:00.000
00005   2012-10-27 00:00:00.000   2012-10-27 07:38:00.000    2012-10-27 19:30:00.000
00005   2012-10-29 00:00:00.000   2012-10-29 07:58:00.000    2012-10-29 18:35:00.000

しかし、私はこの結果が必要です:

日付を選択します。2012-10-29次に、すべての行2012-10-29のみを表示する必要があります。

ただし、NULL に設定さEmpnoれているデータが含まれていないものもあります。2012-10-29

EmpNo   cDate                     timeIn                     timeOut
---------------------------------------------------------------------------------------
00001   2012-10-29 00:00:00.000   2012-10-29 07:52:00.000    2012-10-29 19:00:00.000
00002   2012-10-29 00:00:00.000   2012-10-29 07:40:00.000    2012-10-29 19:32:00.000
00003   2012-10-29 00:00:00.000   NULL                       NULL
00004   2012-10-29 00:00:00.000   NULL                       NULL
00005   2012-10-29 00:00:00.000   2012-10-29 07:58:00.000    2012-10-29 18:35:00.000

御時間ありがとうございます。:)

4

1 に答える 1

0

これはどう?

where(datediff(dd, coalesce(cTime, getdate()), getdate()) = 0

または、本当に 10 月 29 日だけを見たい場合は、次のようにします。

where(datediff(dd, coalesce(cTime, '2012-10-29'), '2012-10-29') = 0
于 2012-10-29T14:57:40.107 に答える