में स्तंभों के बीच एक समानता की जांच का उपयोग करते हुए मैं Microsoft SQL Server 2012 का उपयोग कर रहा है और मैं इस कदाचित सरल क्वेरी चलाने के लिए करना चाहते हैं:एक SELECT खंड
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 [ 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 ]
मुझे लगता है कि इसका मतलब है कि एक अभिव्यक्ति का चयन खंड में मान्य है और वास्तव में दिए गए उदाहरण 1 + 2
तरह बातें शामिल हैं: लेकिन the SELECT Clause (Transact-SQL) documentation इस वाक्य रचना भी शामिल है। the documentation for expressions को देखते हुए:
{ constant | scalar_function | [ table_name. ] column | variable
| (expression) | (scalar_subquery)
| { unary_operator } expression
| expression { binary_operator } expression
| ranking_windowed_function | aggregate_windowed_function
}
बूलियन समानता के चेक कर रहे हैं वैध भाव और वास्तव में the = (Equals) (Transact-SQL) documentation में दिए गए उदाहरण अभिव्यक्ति एक भी शामिल है:
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing'
WHERE
खंड में यद्यपि नहीं SELECT
खंड। ऐसा लगता है कि मैं अपने SELECT
खंड में अभिव्यक्तियों की तुलना करने के लिए समानता ऑपरेटर =
का उपयोग नहीं कर सकता क्योंकि उन्हें गलत तरीके से असाइनमेंट के रूप में व्याख्या किया जा रहा है।
मैं अपने SELECT
खंड में FirstEvent.TitleID = SecondEvent.TitleID AS titlesSameCheck
के समतुल्य बूलियन समानता कॉलम तुलना कैसे शामिल करूं?
'' पर एक नज़र डालें, परिभाषा: 'column_alias = अभिव्यक्ति' कॉलम एलियासिंग का एक वैकल्पिक रूप है। –
मैंने देखा कि, लेकिन मैं उम्मीद करता हूं कि संकलक तुलना से एलियासिंग को अलग करने में सक्षम हो। मेरे लिए व्यक्तिगत रूप से उन्हें अलग रखना ('AS' का उपयोग करके एलआईसिंग,' = 'का उपयोग करके असाइनमेंट, और' ==' का उपयोग करके तुलना) लेकिन मुझे लगता है कि ऐतिहासिक कारण हैं कि टीएसक्यूएल इस तरह स्पष्ट कट क्यों नहीं है? – dumbledad