1

次のようなストアプロシージャがあります。

ALTER procedure [dbo].[Driverperformance]
 @Ecode nvarchar(50),
 @startdate datetime,
 @enddate datetime 
AS 
BEGIN
 declare @date1 datetime = CONVERT(datetime, @startdate + ' 00:01:00.000', 120);        
 declare @date2 datetime = CONVERT(datetime, @enddate + ' 23:23:59.000', 120); 

 SELECT 
   e.Ecode,
   CAST(q.dtime AS DATE) as Date, 
   e.Ename, 
   count(q.Ecode) CntEcode 
 FROM 
   EmployeeMaster_tbl e  JOIN Transaction_tbl q  ON e.Ecode = q.Ecode 
 WHERE 
   q.Ecode=@Ecode AND dtime >= '' + @date1 +'' AND dtime <= ''+@date2+''  
 GROUP BY 
   e.Ecode, e.Ename, CAST(q.dtime AS date) 
 ORDER BY CAST(q.dtime AS date)

 SELECT 
   e.Ecode,
   CAST(q.dtime AS DATE) as Date, 
   e.Ename, 
   count(q.DelEcode) DelEcode 
 FROM 
   EmployeeMaster_tbl e JOIN Transaction_tbl q  ON e.Ecode = q.DelEcode 
 WHERE 
   q.DelEcode=@Ecode AND dtime >= '' + @date1 +'' AND dtime <= ''+@date2+''  
 GROUP BY
   e.Ecode, e.Ename, CAST(q.dtime AS date) 
 ORDER BY 
   CAST(q.dtime AS date) --e.Ecode DESC
 END

私はこの最初の結果のように出力されています:

Ecode   Date         Ename    CntEcode  
E003    2013-05-05   Raheem    4                    
E003    2013-05-28   Raheem    1  

2 番目の結果:

Ecode   Date         Ename    CntEcode  
E003    2013-05-05   Raheem    3         
E003    2013-05-27   Raheem    7           
E003    2013-05-28   Raheem    1    

しかし、私は次のような1つの結果に出たいと思っています:

Ecode   Date         Ename    CntEcode   DelEcode
E003    2013-05-05   Raheem    4            3
E003    2013-05-27   Raheem    0            7
E003    2013-05-28   Raheem    1            1 

どうすればこれを達成できますか? 誰かが知っているなら、私が見つけるのを手伝ってください。

4

2 に答える 2

1

このようなことを試してください。必要なデータを選択するために、トップの select ステートメントに変更してください。

    ALTER procedure [dbo].[Driverperformance]
    @Ecode nvarchar(50),
    @startdate datetime,
    @enddate datetime 
AS
BEGIN
DECLARE @date1 datetime = CONVERT(datetime, @startdate + ' 00:01:00.000', 120); 
DECLARE @date2 datetime = CONVERT(datetime, @enddate + ' 23:23:59.000', 120); 

SELECT T1.*, T2.* 
FROM
(
   SELECT e.Ecode as ECode,
   CAST(q.dtime AS DATE) as [Date], 
   e.Ename as EName, 
   COUNT(q.Ecode) CntEcode 
   FROM EmployeeMaster_tbl e  JOIN Transaction_tbl q ON e.Ecode = q.Ecode 
   WHERE q.Ecode=@Ecode and dtime >= '' + @date1 +'' and dtime <= ''+@date2+'' 
   GROUP BY e.Ecode, e.Ename, CAST(q.dtime AS date)        
) T1
FULL JOIN
(
   SELECT e.Ecode as ECode,
   CAST(q.dtime AS DATE) as [Date], 
   e.Ename as EName, 
   COUNT(q.DelEcode) DelEcode 
   FROM EmployeeMaster_tbl e JOIN Transaction_tbl q ON e.Ecode = q.DelEcode 
   WHERE q.DelEcode=@Ecode and dtime >= '' + @date1 +'' and dtime <= ''+@date2+''  
   GROUP BY e.Ecode, e.Ename, CAST(q.dtime AS date) 
) T2 
ON T1.ECode = T2.ECode
ORDER BY T1.Date     

END
于 2013-09-05T10:45:12.187 に答える