Sql 基于字段值排除项目
我使用下面的脚本创建了一个视图,但其中一个字段正在提取我不需要的信息。在“IsServer”列中,属于服务器的项目标记为1,而不是服务器的项目标记为0。是否有方法创建视图并排除在IsServer列中标记为1的服务器项?我不确定如何将其构建到创建视图脚本中Sql 基于字段值排除项目,sql,sql-server,sql-view,sql-server-2019,Sql,Sql Server,Sql View,Sql Server 2019,我使用下面的脚本创建了一个视图,但其中一个字段正在提取我不需要的信息。在“IsServer”列中,属于服务器的项目标记为1,而不是服务器的项目标记为0。是否有方法创建视图并排除在IsServer列中标记为1的服务器项?我不确定如何将其构建到创建视图脚本中 CREATE VIEW [dbo].[vw_Cherwell_Machines] AS SELECT dbo.rptComputers.HostName, dbo.rptComputers.Vendor, db
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.tblComputer.IsVirtual,
dbo.rptComputers.Vendor,
dbo.rptComputers.ProcessorCount,
dbo.rptComputers.BiosSerialNumber,
dbo.tblComputer.IsServer,
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,
dbo.rptComputers.LastScanDate
你需要一个过滤视图;i、 例如,带有
WHERE
子句的视图。类似这样的内容(我在注释中标记了添加到代码的开始/结束):
文档:请务必查看此处的“限制”部分,以防您的环境中存在无法在此处工作的内容
仅供参考,应避免使用。坚持使用列别名,并使用这些别名来限定列。它使您的代码更加简洁,因此可读性更好。另外,当您的查询中没有聚合时,为什么在这里执行
分组依据
?我仍然建议修复3+部分命名并删除分组依据
,因为没有聚合。@Larnu我同意您的两个顾虑。虽然这些都是正确的,但它们超出了问题的范围。OP想要得到一个过滤后的结果集作为视图创建脚本——我回答了这个问题。你的评论将被OP阅读,并希望得到实施。“虽然这些都是正确的,但它们超出了问题的范围。”我认为这是“好”或“好”答案“很棒”的原因。
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.tblComputer.IsVirtual,
dbo.rptComputers.Vendor,
dbo.rptComputers.ProcessorCount,
dbo.rptComputers.BiosSerialNumber,
dbo.tblComputer.IsServer,
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,
dbo.rptComputers.LastScanDate