Sql server 基于条件参数的查询?
我需要运行一个查询,根据必需和非必需的参数将客户端计算机信息从SQL Server拉入PowerBI 我已设置参数,但无法使SQL代码正常工作。我的两个参数是SelectClient1和SelectClient2。一些客户有多个名称,通常是首字母缩写,如Joe's Construction、Joe's Construction LLC和JCLLC。我需要把那些名字都带回来Sql server 基于条件参数的查询?,sql-server,powerbi,Sql Server,Powerbi,我需要运行一个查询,根据必需和非必需的参数将客户端计算机信息从SQL Server拉入PowerBI 我已设置参数,但无法使SQL代码正常工作。我的两个参数是SelectClient1和SelectClient2。一些客户有多个名称,通常是首字母缩写,如Joe's Construction、Joe's Construction LLC和JCLLC。我需要把那些名字都带回来 选择* 从表1到表2 其中table1.InspectionId=table2.InspectionId 和所有者名称,如“
选择*
从表1到表2
其中table1.InspectionId=table2.InspectionId
和所有者名称,如“%”&SelectClient1&“%”
或类似“%”的所有者名称(&SelectClient2&“%”
我对上述代码的问题是,有时我会将SelectClient2留空。在这种情况下,我需要代码来工作,并且只在所有者类似于SelectClient1的地方返回
返回像这样的东西
InspectionID Client Machine Severity
1 "Joe's Construction LLC" A High
2 "Joe's Construction LLC" B Low
3 "Joe's Construction" A Low
4 "JCLLC" A Medium
5 "JCLLC" B Medium
您在这里很挣扎,因为谓词周围没有任何括号。如果您使用“现代”联接结构,那么这在查询中并不重要。下面是使用ANSI-92样式的联接和参数查询的结果。请注意,当您在这样的谓词中有前导通配符时,您已经使查询不可争论,并且没有索引将起到帮助作用
SELECT *
FROM table1
join table2 on table1.InspectionId = table2.InspectionId
WHERE OwnerName like '%' + @SelectClient1 + '%'
OR OwnerName like '%' + @SelectClient2 + '%'
您确实应该使用ANSI-92样式的联接。他们已经存在超过25年了。使用适当的
连接。它已经存在超过25年了。不知道为什么会这样,但它确实。。。我现在唯一关心的是当我合并两个以上的表时如何应用它。在我的一些查询中,我合并了5或6个表。我不知道如何执行这些连接,除了我一直在做的古老方式,你只需添加更多连接。如果您所做的只是一个以逗号分隔的表列表,那么如何适应左连接或右连接?=和=语法自2008年以来已被删除。之所以这样做是因为你没有括号。您已经离开了join-in-where子句,但是接下来您需要“where t1.ID=t2.ID AND(所有者像‘blah’或所有者像‘bleh’)我从不需要执行左或右连接。从问题中您可能可以看出,我们的数据库管理非常糟糕,允许用户在字段中输入他们想要的任何内容。我必须连接的所有表都是标题表的段和子段;因此,始终需要使用来自两个ta的所有观察结果天哪,听起来确实很可怕。