SQL 查询没有返回正确的记录

SQL Query not returning proper records

我有 3 个 Tables,我必须从中一起获取记录,并且必须在 RadGrid 中显示。

从 Table-1 说 请求 table,我必须获取以下列:

R.RequestID
R.BarcodeNo
R.Company
R.Status

从 Table-2 说 Xml table,我必须获取以下列:

x.ScannedBy
x.ScannedDate
x.VerifiedBy
x.VerifiedDate

从 Table-3 说 Workflow table,我必须获取以下列:

W.Action
W.UserName
W.CreatedDate

现在,此 W.Action 列在 Workflow table 中具有以下数据:

这个 W.Action 列可以有重复的数据,如我上面所示。 对于每个“Action”列,都有“UserName”列和“CreatedDate”列工作流程 table.

现在,我必须从上面的 3 table 中获取记录,其 W.Action = 'Submit'W.Action = 'Update' 而且,在 Select 查询中,我必须将 Select W.Action = 'Submit' 作为不同的列,将 W.Action = 'Update' 作为不同的列,如下格式:

为此,我创建了以下查询:

Select * FROM
(
SELECT distinct

R.RequestID,
R.BarcodeNo,
R.Company,
R.Status,

x.ScannedBy,
x.ScannedDate,
x.VerifiedBy,
x.VerifiedDate,

W.Action, W.UserName as SubmitName, W.CreatedDate as SubmitDate

From [tbl_Request] (NOLOCK) R
Left Join [tbl_Xml](NOLOCK) X On X.XmlID = R.XmlID
Left Join [tbl_Workflow] (NOLOCK) W On W.RequestID = R.RequestID

Where W.Action = 'Submit'
) as A

Left Join

(
SELECT RequestID, W.Action, W.UserName as UpdateName , W.CreatedDate AS UpdateDate

From [tbl_Request] (NOLOCK) R
Left Join [tbl_Xml](NOLOCK) X On X.XmlID = R.XmlID
Left Join [tbl_Workflow] (NOLOCK) W On W.RequestID = R.RequestID

Where Action = 'Update'
) as B 

ON A.RequestID=B.RequestID

通过上面的查询我可以成功得到 Action = 'Submit' 作为 一个单独的列和 Action = 'Update' 作为一个单独的列'

But I am not getting the proper records.

如果我 运行 单独查询的第一部分(即,对于 Action = 'Submit') 它给了我 142747 条记录 AND 如果我单独 运行 查询的第二部分(即对于 Action = 'Update') 它给了我 73021 条记录 但是如果我一次 运行 整个查询,它只给我 215774 条记录,这是不合适的。
假设给我(142747 + 73021)条记录。

请让我知道我的查询有什么问题?
如何获取正确的记录以及 Action = Submit & Action = Update 作为单独的列。
请回复

   SELECT 

    R.RequestID,
    R.BarcodeNo,
    R.Company,
    R.Status,

    x.ScannedBy,
    x.ScannedDate,
    x.VerifiedBy,
    x.VerifiedDate,

    max(case when W.Action='Submit' then W.UserName end) as SubmitName, 
    max(case when W.Action='Submit' then W.CreatedDate end) as SubmitDate, 
    max(case when W.Action='Update' then W.UserName end) as UpdateName  ,
    max(case when W.Action='Update' then W.CreatedDate end) as UpdateDate

    From [tbl_Request] (NOLOCK) R
    Left Join [tbl_Xml](NOLOCK) X On X.XmlID = R.XmlID
    Left Join [tbl_Workflow] (NOLOCK) W On W.RequestID = R.RequestID

    Where W.Action in ( 'Submit','Update')
group by 
  R.RequestID,
    R.BarcodeNo,
    R.Company,
    R.Status,

    x.ScannedBy,
    x.ScannedDate,
    x.VerifiedBy,
    x.VerifiedDate