Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

वेरिएबल को सीटीई वैल्यू कैसे असाइन करें

आप SET . के साथ मान सेट नहीं कर सकते SELECT . में कीवर्ड स्टेटमेंट। आप SELECT . में क्वेरी से वेरिएबल के लिए फ़ील्ड असाइन कर सकते हैं कथन:

WITH CTE AS (
  /** .. Your Query Here .. **/
)
SELECT
  @YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
  CTE

इस मामले में, SELECT सूची की सभी फ़ाइलें एक वैरिएबल को असाइन की जानी चाहिए!

या आप एक एकल पंक्ति-एकल कॉलम assign असाइन कर सकते हैं SELECT SET . द्वारा एक चर के लिए कथन का परिणाम कीवर्ड:

SET @YourVariable = (SELECT COUNT(1) FROM YourTable).

आप उपरोक्त विकल्पों को नहीं मिला सकते हैं।

इसके अलावा, सीटीई को एकल SELECT . के निष्पादन दायरे में परिभाषित किया गया है , INSERT , UPDATE , या DELETE बयान। (http://msdn.microsoft.com/en-us/library/ms175972.aspx)। SET SELECT नहीं है /INSERT /UPDATE /DELETE कथन, यही कारण है कि SQL सर्वर एक सिंटैक्स त्रुटि की रिपोर्ट करता है (CTE को SET कथन के दायरे में परिभाषित नहीं किया जा सकता है।)

आपकी उदाहरण क्वेरी के साथ समाधान

;WITH CTEima(PersonId,IsEmployeeActive) AS
( SELECT COUNT(*)
  FROM   custom.viwSSAppsEmpMasterExtended vem
  WHERE  vem.SupervisorPersonId = @p_PersonId

  UNION ALL

  SELECT CTEima.IsEmployeeActive
  FROM   Custom.viwSSAppsEmpMasterExtended vem
  JOIN   CTEima on CTEima.PersonId = vem.SupervisorPersonId
)
SELECT @v_IsManager = COUNT(*)
FROM CTEima
WHERE IsEmployeeActive = 'Y'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बैच फ़ाइल का उपयोग कर SQL क्वेरी का निष्पादन सेट?

  2. SQL सर्वर कैसे स्थापित करें

  3. SQL सर्वर में एकल पंक्ति MERGE/अप्सर्ट के लिए सिंटैक्स

  4. समान स्ट्रिंग वाले sql रिकॉर्ड खोजें

  5. प्रोएक्टिव SQL सर्वर स्वास्थ्य जांच, भाग 5:सांख्यिकी प्रतीक्षा करें