Tsql 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。
我有以下疑问:Tsql 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。,tsql,Tsql,我有以下疑问: SELECT QuoteReference, CreatedDate, StartDate, EndDate, Operation, TableName, OccurredAt, PerformedBy, FieldName, OldValue, NewValue, Quotes.CreatedByID, Comp
SELECT QuoteReference,
CreatedDate,
StartDate,
EndDate,
Operation,
TableName,
OccurredAt,
PerformedBy,
FieldName,
OldValue,
NewValue,
Quotes.CreatedByID,
CompletedDate,
EmailAddress = (SELECT ContactDetails.EmailAddress,
QuoteReference,
ContactDetails.MobilePhoneNumber
FROM ContactDetails,
Quotes,
QuoteCustomers
WHERE ContactDetails.ID = Quotes.ID
AND QuoteCustomers.QuoteID = ContactDetails.ID)
FROM Quotes
JOIN Audit
ON Quotes.ID = Audit.RowId
WHERE Quotes.CreatedDate BETWEEN '20100401' AND '20120830'
AND PaymentReference IS NOT NULL
AND Audit.OccurredAt > Quotes.CompletedDate
AND Quotes.EmailAddress < > NULL
AND TableName = 'Quotes'
AND Quotes.PolicyReference = NULL
AND Quotes.CreatedByID < > 2
ORDER BY Audit.OccurredAt desc
选择QuoteReference,
创建日期,
开始日期,
结束日期,
操作,
表名,
发生,
执行者,
字段名,
OldValue,
新价值,
Quotes.CreatedByID,
完成日期,
EmailAddress=(选择ContactDetails.EmailAddress,
引用引用,
ContactDetails.MobilePhoneNumber
从联系人详细信息来看,
引述,
报价人
其中ContactDetails.ID=Quotes.ID
和QuoteCustomers.QuoteID=ContactDetails.ID)
引述
加入审计
ON Quotes.ID=Audit.RowId
其中Quotes.CreatedDate介于“20100401”和“20120830”之间
并且PaymentReference不为空
和Audit.OccurredAt>Quotes.CompletedDate
和Quotes.EmailAddress<>空
和TableName='Quotes'
AND Quotes.PolicyReference=NULL
和Quotes.CreatedByID<>2
按审核顺序。发生日期描述
我在执行时遇到此错误:
当子查询未引入EXISTS时,只能在选择列表中指定一个表达式
在子查询中添加第二个where子句之后。如何解决此问题?您在一个变量中选择了三列值 改变
EmailAddress = (SELECT EmailAddress,
QuoteReference,
ContactDetails.MobilePhoneNumber
FROM ContactDetails,
Quotes,
QuoteCustomers
WHERE ContactDetails.ID = Quotes.ID
AND QuoteCustomers.QuoteID = ContactDetails.ID)
到
您的子查询必须返回一行和一列,因此它应该如下所示:
EmailAddress = (SELECT TOP 1 ContactDetails.EmailAddress
FROM ContactDetails,
Quotes,
QuoteCustomers
WHERE ContactDetails.ID = Quotes.ID
AND QuoteCustomers.QuoteID = ContactDetails.ID)
为什么要在子查询中选择
QuoteReference,ContactDetails.MobilePhoneNumber
?您只需要EmailAddress
,因为您要将其分配给单个列。
EmailAddress = (SELECT TOP 1 ContactDetails.EmailAddress
FROM ContactDetails,
Quotes,
QuoteCustomers
WHERE ContactDetails.ID = Quotes.ID
AND QuoteCustomers.QuoteID = ContactDetails.ID)