2016-06-13 69 views
-1

儘管實現我收到錯誤的過程:存儲過程給錯誤而實施

消息156,級別15,狀態1,過程GET_USER_REPORT_DATA,行中的關鍵字19
附近有語法錯誤選擇「。

Msg 102,Level 15,State 1,Procedure GET_USER_REPORT_DATA,Line 23
')'附近的語法不正確。

下面是該過程

ALTER PROCEDURE [dbo].[GET_USER_REPORT_DATA] 
    @From_Date datetime, 
    @To_Date datetime 
AS 
BEGIN 
    Select * 
    into #GetUserTable 
    from 
     (select distinct 
      a.N_UserMkey, b.mkey, 
      ISNULL(b.first_name + ' ' , '') + ISNULL(b.last_name,'') NAME 
     from 
      inward_doc_tracking_trl AS a 
     inner join 
      user_mst AS b on a.N_UserMkey = b.mkey 
     where 
      a.U_datetime between @From_Date and @To_Date 

     select distinct 
      a.mkey, b.ref_mkey 
     from 
      inward_doc_tracking_hdr AS a 
     inner join 
      inward_doc_tracking_trl AS b on a.mkey = b.ref_mkey 
              and a.U_datetime between @From_Date and @To_Date 
     ) as xx 

    SELECT * FROM #GetUserTable 

    DROP TABLE #GetUserTable 
END 
+2

我想你可能忘了把工會或聯合之間兩個喲你在內部查詢中選擇語句 – navnit

+0

@navnit:我已經嘗試過使用'union',但它詢問'所有使用UNION,INTERSECT或EXCEPT操作符組合的查詢必須在其目標列表中具有相同數量的表達式「 – BNN

+1

查詢返回三個字段,第二個查詢返回兩個字段。如果你想使用union – navnit

回答

0

剛剛嘗試這一點,還看到我的評論

ALTER PROCEDURE [dbo].[GET_USER_REPORT_DATA] 
    @From_Date datetime, 
    @To_Date datetime 
AS 
BEGIN 

    Select * 
    --into #GetUserTable --Try to never use temp table. Here no need to use temp table 
    from 
     (
      select distinct a.N_UserMkey, b.mkey, 
       ISNULL(b.first_name + ' ' , '') + ISNULL(b.last_name,'') NAME 
      from inward_doc_tracking_trl AS a 
       inner join user_mst AS b on a.N_UserMkey = b.mkey 
      where a.U_datetime between @From_Date and @To_Date 
      union 
      select distinct a.mkey, b.ref_mkey ,'' NAME -- In your union tale, if you add runtime column then add value based on your datatype. If you add in first query, then name must give, but if you query is second or third then not compulsory 
      from inward_doc_tracking_hdr AS a 
       inner join inward_doc_tracking_trl AS b 
         on a.mkey = b.ref_mkey and a.U_datetime between @From_Date and @To_Date 
     ) as xx 

     --SELECT * FROM #GetUserTable 
     --DROP TABLE #GetUserTable 
END 
+0

試過你的查詢,但第一行的值空白http://s33.postimg.org/914vf1svz/image.png – BNN

+0

這意味着沒有數據。對?如果不是,則給出一些數據 – Ajay2707

0

我想你可能忘記把工會你的兩個SELECT語句之間的內部查詢

ALTER PROCEDURE [dbo].[GET_USER_REPORT_DATA] 
@From_Date DATETIME , 
@To_Date DATETIME 
AS 
BEGIN 
    SELECT * 
    INTO #GetUserTable 
    FROM (SELECT DISTINCT 
         a.N_UserMkey , 
         b.mkey , 
         ISNULL(b.first_name + ' ', '') 
         + ISNULL(b.last_name, '') NAME 
       FROM  inward_doc_tracking_trl a 
         INNER JOIN user_mst b ON a.N_UserMkey = b.mkey 
       WHERE  a.U_datetime BETWEEN @From_Date AND @To_Date 
       UNION 
       SELECT DISTINCT 
         a.mkey , 
         b.ref_mkey , 
         ISNULL(c.first_name + ' ', '') 
         + ISNULL(c.last_name, '') NAME 
       FROM  inward_doc_tracking_hdr a 
         INNER JOIN inward_doc_tracking_trl b ON a.mkey = b.ref_mkey 
                  AND a.U_datetime BETWEEN @From_Date AND @To_Date 
         INNER JOIN user_mst c ON c.N_UserMkey = b.mkey 
      ) AS xx 


    SELECT * 
    FROM #GetUserTable 
    DROP TABLE #GetUserTable 
END 
+0

我沒有在'inward_doc_tracking_trl'表中的first_name,last_name 。它在'user_mst'表 – BNN