Sql server B为空时排除A列的记录
需要有关查询的帮助,该查询将允许我在列a中排除一条记录(如果列中存在一条记录,且该记录的值为null) 假设我有两行是A列名为“test”,它们的B列值分别为1和null。下面是我正在处理的一个查询,在我的场景中,对象ID是a列,endversion是B列Sql server B为空时排除A列的记录,sql-server,Sql Server,需要有关查询的帮助,该查询将允许我在列a中排除一条记录(如果列中存在一条记录,且该记录的值为null) 假设我有两行是A列名为“test”,它们的B列值分别为1和null。下面是我正在处理的一个查询,在我的场景中,对象ID是a列,endversion是B列 select b.PortID, max(endversion)as EndVersion, d.ShortName as RuleName from xr.ObjectPropertyValue a
select b.PortID,
max(endversion)as EndVersion,
d.ShortName as RuleName
from xr.ObjectPropertyValue a
join moxyportfolio b on a.objectid=b.portkey
join xr.AssignAllObjectsRule c on a.Objectclassid=c.ObjectClassID -- can replace with xr.assignobjectrule if it's rule is not assigned to all portfolios.
join xr.rulebase d on c.RuleID=d.RuleID
where objectid in (select objectid from xr.objectpropertyvalue where endversion is not null)
group by a.ObjectId, b.portid,d.ShortName
您可以使用
have
:
select
b.PortID,
max(endversion) as EndVersion,
d.ShortName as RuleName
from xr.ObjectPropertyValue a
join moxyportfolio b
on a.objectid = b.portkey
join xr.AssignAllObjectsRule c
on a.Objectclassid = c.ObjectClassID -- can replace with xr.assignobjectrule if it's rule is not assigned to all portfolios.
join xr.rulebase d
on c.RuleID = d.RuleID
group by a.ObjectId, b.portid, d.ShortName
having sum(case when endversion is null then 1 else 0 end) = 0
仅当列B不为空时才为列A选择值(否则为空): 仅当列B不为null(否则为null)时,才为列a选择一个值:
endversion列是否来自xr.ObjectPropertyValue表?
SELECT COLA
FROM TABLE
WHERE COLB IS NOT NULL
SELECT CASE WHEN COLB IS NOT NULL THEN COLA ELSE NULL END AS COLA
FROM TABLE