Microsoft SQL Server 2012 を使用しており、この一見単純なクエリを実行したいと考えています。
SELECT
FirstEvent.id AS firstEventID,
SecondEvent.id AS secondEventID,
DATEDIFF(second, FirstEvent.WndFGEnd, SecondEvent.WndFGStart) AS gap,
FirstEvent.TitleID = SecondEvent.TitleID AS titlesSameCheck
FROM VibeFGEvents AS FirstEvent
RIGHT OUTER JOIN VibeFGEvents AS SecondEvent
ON
FirstEvent.intervalMode = SecondEvent.intervalMode
AND FirstEvent.id = SecondEvent.id - 1
AND FirstEvent.logID = SecondEvent.logID
ただしFirstEvent.TitleID = SecondEvent.TitleID AS titlesSameCheck
、SELECT
節の構文は正しくありません。ただし、SELECT 句 (Transact-SQL) のドキュメントには、次の構文が含まれています。
SELECT [ ALL | DISTINCT ]
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ]
<select_list>
<select_list> ::=
{
*
| { table_name | view_name | table_alias }.*
| {
[ { table_name | view_name | table_alias }. ]
{ column_name | $IDENTITY | $ROWGUID }
| udt_column_name [ { . | :: } { { property_name | field_name }
| method_name ( argument [ ,...n] ) } ]
| expression
[ [ AS ] column_alias ]
}
| column_alias = expression
} [ ,...n ]
これは、 select 句で式が有効であることを意味すると思います。実際、与えられた例には1 + 2
. 式のドキュメントを見る:
{ constant | scalar_function | [ table_name. ] column | variable
| ( expression ) | ( scalar_subquery )
| { unary_operator } expression
| expression { binary_operator } expression
| ranking_windowed_function | aggregate_windowed_function
}
ブール値の等値チェックは有効な式であり、実際に= (Equals) (Transact-SQL) ドキュメントに記載されている式の例には次の式が含まれています。
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing'
節でWHERE
はなくSELECT
節の中にありますが。=
等価演算子を使用して句の式を比較できないようSELECT
です。それらは代入として誤って解釈されているためです。
句FirstEvent.TitleID = SecondEvent.TitleID AS titlesSameCheck
に同等のブール等価列比較を含めるにはどうすればよいですか?SELECT