在第一个查询结果中添加 CDept_Id
Posted
技术标签:
【中文标题】在第一个查询结果中添加 CDept_Id【英文标题】:Add CDept_Id In first query for result 【发布时间】:2016-09-21 06:29:23 【问题描述】:在我的第一个查询中,我想得到CDept_Id
。但是CDept_Id
列在inward_doc_tracking_hdr
表中不存在。
它来自inward_doc_tracking_trl
表。如下所示
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
【问题讨论】:
请提供表结构,以便我们了解表关系,并为您提供比现有解决方案更好的解决方案。 @Suraz:我想在第二个查询中添加CDept_Id
列。您需要与此相关的哪些帮助?
格式化后就清晰了:)
【参考方案1】:
它正在读取魔法玻璃灯泡,但我认为您可以使用mkey
和ref_mkey
作为链接将INNER JOIN
连接到另一张桌子:
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
获取所有第一行
,LatestCDept AS
(
SELECT TOP 1 WITH TIES *
FROM OrderedCDept
ORDER BY SortInx
)
--现在用第二个CTE代替表加入
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'
【讨论】:
我的CDept_Id
给了我不止一个价值如何获得最新的??我的意思是desc
格式以上是关于在第一个查询结果中添加 CDept_Id的主要内容,如果未能解决你的问题,请参考以下文章