获取一次重复记录(SQL)

获取一次重复记录(SQL),sql,Sql,我从查询语句中得到了这个结果。但我不想在第二列的3条记录中重复最后一列(注释) 我想为第二列上的值写一次重复的注释。就像一群人一样好吧,我来试试这个。现在还不清楚你到底希望得到什么,但是读了你的评论,听起来你想在你的表中建立一个排序层次结构 大概是这样的: SELECT DISTINCT A.LeaseID, C.SerialNumber, B.LeasedProjectNumber As 'ProjectNumber',

我从查询语句中得到了这个结果。但我不想在第二列的3条记录中重复最后一列(注释)


我想为第二列上的值写一次重复的注释。就像一群人一样好吧,我来试试这个。现在还不清楚你到底希望得到什么,但是读了你的评论,听起来你想在你的表中建立一个排序层次结构

大概是这样的:

SELECT DISTINCT A.LeaseID, 
                C.SerialNumber, 
                B.LeasedProjectNumber As 'ProjectNumber', 
                A.LeaseComment As 'LeaseContractComments'
FROM aLease A
LEFT OUTER JOIN aLeasedAsset B
ON a.LeaseID = B.LeaseID
LEFT OUTER JOIN aAsset C
ON B.LeasedProjectNumber = C.ProjectNumber AND B.PartID = C.aPartid
WHERE A.LeaseComment IS NOT NULL
不幸的是,我不相信那是可能的。SQLServer在返回表方面非常严格,表的定义是二维的。在SQL中没有很好的方法来描述这样的层次结构。这是一种类型,但在这里并不相关

因此,您实际上只有两个选择:

  • 我的偏好是,99%的时候,只接受重复项。稍后在过程代码中处理它们,这可能确实支持这些树。除非您处理的是性能关键的情况,或者如果您要收回大量数据(或非常长的注释),否则这应该是完全正确的

  • 如果您希望将此结果直接打印给用户,或者如果网络性能是一个大问题,将您的列聚合为每个评论的单个记录。众所周知,您不能在同一列中有多个值,原因与上面列出的结果不可能完全相同。但是,如果数据和您自己的偏好允许,您可以做的是

    不过,您可能需要解析掉这些逗号,因此,除非网络流量是您最关心的问题,否则我只会从程序的角度来做

  • 输出:

    序列号

    24914724993

    23401720356

    项目编号

    87


    91

    显示sql查询将非常有用。您获得重复结果的原因可能有很多。可以有多种方法来修复它。选择不同的a.LeaseID、C.SerialNumber、B.LeasedProjectNumber作为“ProjectNumber”,a.LeaseComment作为“LeaseContractComments”,B.LeasedAssetComment FROM aLease A LEFT OUTER JOIN aLeasedAsset B ON A.LeaseID=B.LeaseID LEFT OUTER JOIN aAsset C ON B.LeasedProjectNumber=C.ProjectNumber和B.PartID=C.aPartid,其中A.LeaseComment不为NULL,B.LeasedAssetComment不为NULL查询中有5列,但仅显示4列。我不明白你想删除哪一条评论。嗨,我的朋友,不管上一篇专栏是什么,我把它放在这里是为了测试。在你的问题上加上你希望你的结果是什么,你就可以做生意了,虽然还不清楚。谢谢马特,我正试图用产品代码来解决这个问题。
    "Lease Terminated Jan 29, 2013 due to the event of..."
        216    24914   87
        216    724992  87
        216    724993  87
    "Other potential column"
        217    2132    86
        ...
    ...
    
    SELECT STUFF((SELECT DISTINCT ', ' + SerialNumber
              FROM [vLeasedAsset]
              WHERE A.LeaseID = LeaseID AND A.ProjectNumber = ProjectNumber
              FOR XML PATH (''))
              , 1, 1, '') AS SerialNumber, [ProjectNumber], 
              MAX(ContractComment) 'LeaseContractComment'               
      FROM [vLeasedAsset] A
      WHERE ContractComment != ''
      GROUP BY [ProjectNumber], LeaseID