在第一个结果查询中添加 CDept_Id

Add CDept_Id In first query for result

在我的第一个查询中,我想得到 CDept_Id。但是 CDept_Id 列在 inward_doc_tracking_hdr table 中不存在。

来自inward_doc_tracking_trltable。如下所示

SELECT  CDept_id
FROM    inward_doc_tracking_trl
WHERE   ref_mkey IN ( SELECT    mkey
                      FROM      inward_doc_tracking_hdr
                      WHERE     doc_no = 'IW/HU/16/42' )

所以,从这个。我得到 CDept_Id。现在我想在下面的查询中添加它。

SELECT  mkey ,
        Delivered_By ,
        Department_Id ,
        ( SELECT    mkey
          FROM      erp190516.dbo.emp_mst
          WHERE     mkey IN ( SELECT    employee_mkey
                              FROM      erp190516.dbo.user_mst
                              WHERE     mkey = To_User )
        ) User_Id ,
        Doc_Type ,
        Email_Id ,
        Ref_No ,
        CONVERT(VARCHAR(25), Ref_date, 103) Ref_date ,
        Inward_Amt ,
        Remarks ,
        party_name ,
        disp_through
FROM    erp190516.dbo.inward_doc_tracking_hdr ,
        CDept_id  -- add CDept_id here
WHERE   doc_no = 'IW/HU/16/42'
        AND Status_Flag = '13'

如何添加这个

更新

inward_doc_tracking_hdr mkey 等于 inward_doc_tracking_trl ref_mkey

它正在读取魔法玻璃灯泡,但我认为您可能需要一个 INNER JOIN 到另一个 table 使用 mkeyref_mkey 作为 link:

Select hdr.mkey
      ,hdr.Delivered_By
      ,hdr.Department_Id 
      ,hdr.Doc_Type,Email_Id
      ,hdr.Ref_No
      ,convert(varchar(25),hdr.Ref_date,103) Ref_date
      ,hdr.Inward_Amt
      ,hdr.Remarks
      ,hdr.party_name
      ,hdr.disp_through
      ,trl.CDept_Id
from erp190516.dbo.inward_doc_tracking_hdr AS hdr
inner join erp190516.dbo.inward_doc_tracking_trl AS trl on hdr.mkey=trl.ref_mkey
 where hdr.doc_no = 'IW/HU/16/42'  
 and hdr.Status_Flag = '13'

更新...更多猜测...

--第一个获得CDept_Id

分区顺序的CTE
;WITH OrderedCDept AS
(
    SELECT ROW_NUMBER() OVER(PARTITION BY ref_mkey ORDER BY CDept_Id DESC) AS SortInx
          ,ref_mkey
          ,CDept_Id
    FROM erp190516.dbo.inward_doc_tracking_trl
)

--第二个 CTE 使用 TOP 1 WITH TIES 获取所有 first

,LatestCDept AS
(
    SELECT TOP 1 WITH TIES *
    FROM OrderedCDept
    ORDER BY SortInx
)

--现在使用第二个CTE代替table加入

Select hdr.mkey
      ,hdr.Delivered_By
      ,hdr.Department_Id 
      ,hdr.Doc_Type,Email_Id
      ,hdr.Ref_No
      ,convert(varchar(25),hdr.Ref_date,103) Ref_date
      ,hdr.Inward_Amt
      ,hdr.Remarks
      ,hdr.party_name
      ,hdr.disp_through
      ,trl.CDept_Id
from erp190516.dbo.inward_doc_tracking_hdr AS hdr
inner join LatestCDept AS trl on hdr.mkey=trl.ref_mkey
 where hdr.doc_no = 'IW/HU/16/42'  
 and hdr.Status_Flag = '13'