微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据字段值排除项目

如何解决根据字段值排除项目

我已经使用以下脚本创建了一个视图,但其中一个字段正在提取我不需要的信息。在“IsServer”列中,作为服务器的项目标有 1,不是服务器的项目标有 0。有没有办法创建视图并排除在是服务器列?我不确定如何将其构建到创建视图脚本中。

CREATE VIEW [dbo].[vw_Cherwell_Machines] AS 
SELECT dbo.rptComputers.HostName,dbo.rptComputers.vendor,dbo.tblComputer.IsVirtual,dbo.rptComputers.ProcessorCount,dbo.tblComputer.IsServer,dbo.rptComputers.BiosSerialNumber,dbo.rptComputers.PhysicalMemory,dbo.rptComputers.ProcessorType,dbo.rptComputers.ProcessorSpeed,dbo.rptComputers.MostFrequentUser,dbo.tblComputer.Domain,dbo.rptComputers.ClientVersion,dbo.rptComputers.ClientInstallDate,dbo.rptComputers.ClientConfigurationName,dbo.rptComputers.Biosversion,dbo.rptComputers.BiosDate,dbo.rptComputers.Manufacturer,dbo.rptComputers.Model,dbo.rptComputers.IsPortable,dbo.rptComputers.OperatingSystem,dbo.tblComputer.OSServicePack,dbo.rptComputers.ComputerStatusCode,dbo.rptComputers.IPAddress AS 'MultipleIPAddress',CASE WHEN PATINDEX ('%[,]%',dbo.rptComputers.IPAddress) > 0 THEN 
       left(dbo.rptComputers.IPAddress,(PATINDEX('%[,dbo.rptComputers.IPAddress))-1) 
       ELSE dbo.rptComputers.IPAddress 
       END  AS 'IPAddress',dbo.rptComputers.LastScanDate

FROM dbo.rptComputers INNER JOIN dbo.tblComputer ON dbo.rptComputers.CID = dbo.tblComputer.CID 
     AND dbo.rptComputers.ComputerID = dbo.tblComputer.ComputerID

GROUP BY dbo.rptComputers.HostName,dbo.rptComputers.IPAddress,dbo.rptComputers.LastScanDate

解决方法

您需要一个过滤视图;即,带有 WHERE 子句的视图。像这样(我在评论中标记了我添加到您的代码的开始/结束):

CREATE VIEW [dbo].[vw_Cherwell_Machines] AS 
SELECT dbo.rptComputers.HostName,dbo.rptComputers.Vendor,dbo.tblComputer.IsVirtual,dbo.rptComputers.ProcessorCount,dbo.tblComputer.IsServer,dbo.rptComputers.BiosSerialNumber,dbo.rptComputers.PhysicalMemory,dbo.rptComputers.ProcessorType,dbo.rptComputers.ProcessorSpeed,dbo.rptComputers.MostFrequentUser,dbo.tblComputer.Domain,dbo.rptComputers.ClientVersion,dbo.rptComputers.ClientInstallDate,dbo.rptComputers.ClientConfigurationName,dbo.rptComputers.BiosVersion,dbo.rptComputers.BiosDate,dbo.rptComputers.Manufacturer,dbo.rptComputers.Model,dbo.rptComputers.IsPortable,dbo.rptComputers.OperatingSystem,dbo.tblComputer.OSServicePack,dbo.rptComputers.ComputerStatusCode,dbo.rptComputers.IPAddress AS 'MultipleIPAddress',CASE WHEN PATINDEX ('%[,]%',dbo.rptComputers.IPAddress) > 0 THEN 
       left(dbo.rptComputers.IPAddress,(PATINDEX('%[,dbo.rptComputers.IPAddress))-1) 
       ELSE dbo.rptComputers.IPAddress 
       END  AS 'IPAddress',dbo.rptComputers.LastScanDate

FROM dbo.rptComputers INNER JOIN dbo.tblComputer ON dbo.rptComputers.CID = dbo.tblComputer.CID 
     AND dbo.rptComputers.ComputerID = dbo.tblComputer.ComputerID
/*begin change*/
WHERE tblComputer.IsServer = 0 
/*end change*/
GROUP BY dbo.rptComputers.HostName,dbo.rptComputers.IPAddress,dbo.rptComputers.LastScanDate

文档:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-filtered-indexes?view=sql-server-ver15 请务必查看此处的“限制”部分,以防您的环境中存在无法在此处运行的内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。