/ / बदलें T-SQL क्वेरी तालिका दृश्य फ़ंक्शन के साथ INSERT का उपयोग करके इसके बजाय देखें - sql-server, tsql, view, सामान्य-टेबल-एक्सप्रेशन, तालिका-मूल्यवान-पैरामीटर

एक दृश्य में तालिका मूल्यवान फ़ंक्शन के साथ एक INSERT का उपयोग करके टी-एसक्यूएल क्वेरी बदलें - एसक्यूएल-सर्वर, tsql, देखें, सामान्य-तालिका-अभिव्यक्ति, तालिका-मूल्यवान-पैरामीटर

क्वेरी डेटा संपर्क रखने वाली एक तालिका की चिंता करती है। प्रत्येक संपर्क के लिए "स्थिति" वापस करने के लिए एक टेबल वैल्यू फ़ंक्शन का उपयोग किया जाता है।

सम्मिलित विवरण से अद्वितीय कुंजी प्राप्त होती हैसंपर्क तालिका और इसे @filteredIdList नामक एक चर में लोड करता है। यह तब संपर्क तालिका में शामिल हो जाता है और फिर चर-मूल्यवान फ़ंक्शन में चर @filteredIdList को पास करके।

मैंने यह दिखाने के लिए उदाहरण को सरल बना दिया है कि वर्तमान में मैं कैसे स्थिति वापस कर रहा हूँ। इसके बजाय इसे एक दृश्य में बदलने की आवश्यकता है:

DECLARE @filteredIdList IdList;
INSERT INTO @filteredIdList SELECT ContactID FROM Contacts

SELECT
Contacts.ContactID,
Contact_Status

FROM   Contacts
INNER JOIN @filteredIdList [IDLIST] ON Contacts.ContactID = [IDLIST].[id]
INNER JOIN tvfContact_Status(@filteredIdList) Contact_Status
ON [IDLIST].[id] = Contact_Status.ContactID

मैंने इसे देखने के अंदर एक सीटीई के रूप में बनाने की कोशिश की है, लेकिन इसे समझ नहीं पाया।

उत्तर:

जवाब के लिए 0 № 1

मेरा मानना ​​है कि जिस सीटीई की आप तलाश कर रहे हैं वह होगा।

;with nameofcte (IdList) as (
select ContactID from Contacts
)

तो आप बस अपने ज्वाइन स्टेटमेंट में nameofcte का उपयोग करेंगे

मैं सीटीई का हर रोज उपयोग नहीं करता हूं, इसलिए मैं सामान्य रूप से इस पोस्ट को सरल टॉक पर पढ़ता हूं ताकि उपयोग करने से पहले उन पर खुद को ताज़ा कर सकें। https://www.simple-talk.com/sql/t-sql-programming/sql-server-cte-basics/


जवाब के लिए 0 № 2

निश्चित नहीं है कि आपको यहां एक दृश्य की आवश्यकता क्यों है, लेकिन यदि आप ऐसा करना चाहते हैं तो नीचे दिए गए तरीके से प्रयास करें

के बाद से tvfContact_Status प्रत्येक संपर्क की स्थिति वापस करने के लिए उपयोग किया जाता है। बदलाव Table valued function सेवा मेरे Scalar function.

पहले बदलो tvfContact_Status समारोह

ALTER FUNCTION dbo.tvfContact_Status(@ContactID int)
RETURNS varchar(50) --Status
AS
BEGIN
--------
RETURN @Status;
END;
GO

बनाएं एक View इस तरह

CREATE VIEW Contact_View
AS
SELECT
Contacts.ContactID,
dbo.tvfContact_Status(ContactID) as Contact_Status
FROM   Contacts

ध्यान दें: यह ऐसा करने का एक कुशल तरीका नहीं है