Sql select语句,该语句可以对不在主查询中的表中的行进行计数
我有一个旧的查询,现在我想计算未包含在主查询中的表中wbs.WBSNodeGuid的行数。我尝试在主select中的一个单独的select语句中使用COUNT()执行此操作,但它当然不理解select COUNT()语句中的wbs。如何计算另一个表中的行数以匹配主查询的当前行的wbs.WBSNodeGuid值 请注意,这个例子比原来的要简单得多,但应该能够大致了解我尝试了什么以及我在寻找什么Sql select语句,该语句可以对不在主查询中的表中的行进行计数,sql,sql-server,Sql,Sql Server,我有一个旧的查询,现在我想计算未包含在主查询中的表中wbs.WBSNodeGuid的行数。我尝试在主select中的一个单独的select语句中使用COUNT()执行此操作,但它当然不理解select COUNT()语句中的wbs。如何计算另一个表中的行数以匹配主查询的当前行的wbs.WBSNodeGuid值 请注意,这个例子比原来的要简单得多,但应该能够大致了解我尝试了什么以及我在寻找什么 SELECT wbs.WBSNodeGuid , (SELECT COUNT(*) FR
SELECT wbs.WBSNodeGuid
, (SELECT COUNT(*) FROM Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0)
FROM WBSNode wbs
Above is a simplified version. Below is the actual that I am trying to add to.
SELECT wbs.WBSNodeText
, wbs.WBSNodeOverallIndex
, wbs.WBSNodePath
--***THIS IS THE COLUMN I'M TRYING TO ADD**** (SELECT COUNT(*) FROM Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0)
, insp.WBSNodeInspectionGuid
, insp.WBSInspInspector
, insp.WBSInspDate
, insp.WBSInspNote
, image0.WBSInspImageBlobPartialPath Image0
, image1.WBSInspImageBlobPartialPath Image1
, opt.POptionDefaultValue NetworkImagePath
, opt2.POptionDefaultValue WBSPathStartDepth
FROM ProjectOption opt
, ProjectOption opt2
, WBSNode wbs
, WBSNodeInspection insp
LEFT OUTER JOIN WBSNodeInspectionImage image0
ON insp.WBSNodeInspectionGuid = image0.WBSNodeInspectionGuid
AND image0.WBSInspImageIndex = 0
AND image0.Deleted = 0
LEFT OUTER JOIN WBSNodeInspectionImage image1
ON insp.WBSNodeInspectionGuid = image1.WBSNodeInspectionGuid
AND image1.WBSInspImageIndex = 1
AND image1.Deleted = 0
INNER JOIN Marker mkr ON mkr.WBSNodeGuid = wbs.WBSNodeGuid AND mkr.Deleted = 0
WHERE wbs.WBSNodeGuid = insp.WBSNodeGuid
AND opt.ProjectOption = 'NetworkPathToProjectImages'
AND opt2.ProjectOption = 'LevelToStartLocationPortionOfWBSNodePath'
AND opt.Deleted = 0
AND opt2.Deleted = 0
AND wbs.Deleted = 0
AND insp.Deleted = 0
ORDER BY wbs.WBSNodeText, insp.WBSInspDate
这行吗
SELECT count(distinct wbs.WBSNodeGuid) as [Count]
FROM WBSNode wbs
INNER JOIN Marker mkr ON mkr.WNSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0
如果这不是你想要的,这个怎么样
SELECT wbs.WBSNodeGuid
,count(*) as [Count]
FROM WBSNode wbs
INNER JOIN Marker mkr ON mkr.WNSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0
GROUP BY wbs.WBSNodeGuid
根据您的新更新,这里的查询应该有效
SELECT wbs.WBSNodeText
, wbs.WBSNodeOverallIndex
, wbs.WBSNodePath
,(select count (*) from Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND mkr.Deleted = 0 ) as [Deleted Count]
, insp.WBSNodeInspectionGuid
, insp.WBSInspInspector
, insp.WBSInspDate
, insp.WBSInspNote
, image0.WBSInspImageBlobPartialPath Image0
, image1.WBSInspImageBlobPartialPath Image1
, opt.POptionDefaultValue NetworkImagePath
, opt2.POptionDefaultValue WBSPathStartDepth
FROM ProjectOption opt
, ProjectOption opt2
, WBSNode wbs
, WBSNodeInspection insp
LEFT OUTER JOIN WBSNodeInspectionImage image0
ON insp.WBSNodeInspectionGuid = image0.WBSNodeInspectionGuid
AND image0.WBSInspImageIndex = 0
AND image0.Deleted = 0
LEFT OUTER JOIN WBSNodeInspectionImage image1
ON insp.WBSNodeInspectionGuid = image1.WBSNodeInspectionGuid
AND image1.WBSInspImageIndex = 1
AND image1.Deleted = 0
WHERE wbs.WBSNodeGuid = insp.WBSNodeGuid
AND opt.ProjectOption = 'NetworkPathToProjectImages'
AND opt2.ProjectOption = 'LevelToStartLocationPortionOfWBSNodePath'
AND opt.Deleted = 0
AND opt2.Deleted = 0
AND wbs.Deleted = 0
AND insp.Deleted = 0
ORDER BY wbs.WBSNodeText, insp.WBSInspDate
样本数据和期望的结果将非常有用。在我看来,您的查询很好。原始查询非常复杂,到目前为止,在主查询中连接标记表一直是个问题。而且,它也不起作用,因为还有很多其他的连接,所以不可能像你所展示的那样做一个独特的连接,我不相信。请看我的第二个建议。如果看不到表模式和数据,就很难知道您在寻找什么。另外,我建议不要使用FROM X,Y,Z语法。我会使用FROM X inner join Y on Y.Id=X.Id inner join Z on Z.Id=X.Id等等。我删除了inner join标记,这会弄乱你的查询。啊。虽然我本来没有。一定是在我测试的时候把线交叉了。谢谢你帮我整理。