我正在尝试找出一种只显示基于DPA.value的联系人详细信息的方法,因此可以根据DPA值从输出列表中排除联系人,如果dpa值等于5,则排除联系人。排除电子邮件地址if DPA值= 3或4.如果值= 2或4
,则排除电话如果DB.OrganisationPersonnel.EmployedToDate为空,则排除联系人 这段代码似乎没有用,任何帮助都会非常感激。
case class Book(isbn: String)
val b = Book("123")
b.toString // "Book(123)"
trait CaseClassParser[A] {
val prefix = A.getClass.getName // Not work
def read(str: String): A = {
Parser.parse....
}
}
我尝试添加其他ON WHERE,但无法解决如何没有错误。任何帮助都会非常感激,因为我对SQL很新。
答案 0 :(得分:0)
首先,您的FROM
子句中不需要任何括号。只需删除它们。数据库引擎查询优化器将以最佳顺序为您进行连接。
接下来,您在ON
上下文中遇到语法错误。您应该使用AND
表达式组合多个匹配项,因为它只是一个布尔表达式。而不是写
ON
DB.Person.TitleID = DB.Title.ID)
ON
DB.OrganisationPersonnel.PersonnelID = DB.Person.ID)
写下
ON DB.Person.TitleID = DB.Title.ID
AND DB.OrganisationPersonnel.PersonnelID = DB.Person.ID
答案 1 :(得分:0)
你的联接很好(虽然大多数人更喜欢语法变化,其中JOIN直接跟随ON)。但是你应该开始使用别名来简化写作&阅读源代码:
SELECT
op.OrganisationID
, t.Name
, p.FirstName
...
FROM
(((DB.OrganisationPersonnel AS op
INNER JOIN
(DB.Person AS p
INNER JOIN
DB.Title AS t
ON
p.TitleID = t.ID)
ON
op.PersonnelID = p.ID)
...
IF
使用CASE
在标准SQL中实现:
SELECT
op.OrganisationID
, CASE WHEN ProductPAID <> 5 THEN op.PersonnelID END AS PersonnelID
, DB.Title.Name
...
, CASE WHEN ProductPAID <3 THEN p.Number END AS PhoneNumber
, CASE WHEN ProductPAID IN (2, 5) THEN e.Email END AS email
这将为非匹配数据返回NULL,但是可选ELSE
以默认值覆盖它。
答案 2 :(得分:0)
您可以编写简单查询,但是很喜欢这个
File.WriteAllText(filePath + ".csv", strbr.ToString(), Encoding.UTF8);
并且您必须按示例
编写联接答案 3 :(得分:0)
尝试以下查询。
declarations: []