সিটিই কোয়েরি থেকে SEMP * INTO TempTable দিয়ে টেম্প টেবিলটি কীভাবে তৈরি করবেন


163

আমার একটি এমএস এসকিউএল সিটিই কোয়েরি রয়েছে যা থেকে আমি একটি অস্থায়ী টেবিল তৈরি করতে চাই। আমি কীভাবে এটি করতে হবে তা নিশ্চিত না কারণ এটি একটি Invalid Object nameত্রুটি দেয় ।

নীচে রেফারেন্সের জন্য পুরো ক্যোয়ারী দেওয়া আছে

SELECT * INTO TEMPBLOCKEDDATES FROM 
;with Calendar as (
    select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate
    ,EventType from EventCalender
    where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1
    union all
    select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, PlannedDate)
    ,EventType from Calendar
    where EventRecurring = 1
        and dateadd(dd, 1, PlannedDate) <= EventEndDate 
)
select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
    or EventEnumDays is null
order by EventID, PlannedDate
option (maxrecursion 0)

আমি সঠিক দিকের একটি পয়েন্টের প্রশংসা করব বা যদি আমি এই সিটিই কোয়েরি থেকে একটি অস্থায়ী টেবিল তৈরি করতে পারি


এখানে কিভাবে এটা করতে stackoverflow.com/questions/3306096/...
Luxspes

1
@ আরজিআই, উভয় উত্তরই আমার মামলার পক্ষে কাজ করবে, আমি তাকে মার্টিনকে আপ-ভোট দিয়েছি, যেহেতু আমি কেবল একটি উত্তর বেছে নিতে পারি। আমি আপনার উত্তর প্রশংসা করি। আপনি তার উত্তরটির উপরে তার পছন্দটিকে অগ্রাধিকার দিয়েছিলেন যেমন আপনি টেম্প কোয়েরির মোছার অংশটিও উল্লেখ করেছিলেন। আপনার পক্ষেও আপ-ভোট দিন ..
শিখছি

উত্তর:


238

নমুনা ডিডিএল

create table #Temp
(
    EventID int, 
    EventTitle Varchar(50), 
    EventStartDate DateTime, 
    EventEndDate DatetIme, 
    EventEnumDays int,
    EventStartTime Datetime,
    EventEndTime DateTime, 
    EventRecurring Bit, 
    EventType int
)

;WITH Calendar
AS (SELECT /*...*/)

Insert Into #Temp
Select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
    or EventEnumDays is null

সারণী ব্যবহারের পরে মুছে ফেলা হয়েছে তা নিশ্চিত করুন

If(OBJECT_ID('tempdb..#temp') Is Not Null)
Begin
    Drop Table #Temp
End

6
ডাবল পিরিয়ড কেন? এটা কি টাইপো?
মাইক কোল

18
..টি স্কিমা উল্লেখ করে বাদ দিতে হবে। প্রাক্তন tempdb.dbo। # অস্থায়ী জন্য। এর পরিবর্তে আমরা টেম্পিডবি টাইপ করতে পারি .. # অস্থায়ী।
সাম

7
এটি প্রশ্নের উত্তর দেয় না। ওপি বিশেষত সিলেক্ট ইনটো দিয়ে এটি কীভাবে করবেন তা জিজ্ঞাসা করেছিলেন এবং এই প্রতিক্রিয়া তা করে না। এটি একটি ভাল উত্তর, তবে এটি সঠিক উত্তর নয়।
ডেভআইএনএজেড

165

সত্যই ফর্ম্যাটটি বেশ সহজ হতে পারে - কখনও কখনও কোনও টেম্প টেবিলের পূর্বনির্ধারণের প্রয়োজন হয় না - এটি নির্বাচনের ফলাফল থেকে তৈরি করা হবে।

Select FieldA...FieldN 
into #MyTempTable 
from MyTable

সুতরাং আপনি যদি না বিভিন্ন ধরণের চান বা সংজ্ঞা সম্পর্কে খুব কঠোর না হন তবে বিষয়গুলি সহজ রাখুন। আরও মনে রাখবেন যে সঞ্চিত প্রক্রিয়াটির অভ্যন্তরে তৈরি হওয়া কোনও অস্থায়ী সারণী স্বয়ংক্রিয়ভাবে বাদ দেওয়া হয় যখন সঞ্চিত পদ্ধতিটি কার্য সম্পাদন শেষ করে। যদি সঞ্চিত পদ্ধতি A একটি অস্থায়ী টেবিল তৈরি করে এবং সঞ্চিত পদ্ধতি বিকে কল করে, তবে বি তৈরি করা অস্থায়ী টেবিলটি ব্যবহার করতে সক্ষম হবে।

যাইহোক, আপনি যেভাবে যে কোনও অস্থায়ী টেবিলটি স্পষ্টভাবে বাদ দেওয়ার পক্ষে এটি সাধারণত ভাল কোডিং অনুশীলন হিসাবে বিবেচিত হয়।


4
আমি যদি আমার কোডের ড্রপ টেবিল ব্যবহার করে এটি অপসারণ না করি তবে মৃত্যুদণ্ড কার্যকর হওয়ার পরে ডেটা বেসে অস্থায়ী টেবিলটি আর কতক্ষণ পাওয়া যায়? কারণ আমি কোডটি দু'বার select * into #tempসম্পাদন করেছি তবে, দ্বিতীয়বার এক্সিকিউশনটি একটি ত্রুটি সরবরাহ করে: "# টেস্ট ইতিমধ্যে ডেটা বেসে উপস্থিত রয়েছে"
কুরাপিকা

6
@ কুরপিকা সংযোগের সময়কাল
জোন্সোপলিস

7
সারণীটি ব্যবহারের আগে আমাদের স্পষ্টভাবে টেবিলটি তৈরি করার দরকার নেই এই উত্তরটির মধ্যে সবচেয়ে প্রাসঙ্গিক সত্য। ধন্যবাদ!
আলফাব্রভো

24

SELECT ... INTOচাহিদা কোটে থেকে নির্বাচন করুন হতে।

;WITH Calendar
     AS (SELECT /*... Rest of CTE definition removed for clarity*/)
SELECT EventID,
       EventStartDate,
       EventEndDate,
       PlannedDate                   AS [EventDates],
       Cast(PlannedDate AS DATETIME) AS DT,
       Cast(EventStartTime AS TIME)  AS ST,
       Cast(EventEndTime AS TIME)    AS ET,
       EventTitle,
       EventType
INTO TEMPBLOCKEDDATES /* <---- INTO goes here*/        
FROM   Calendar
WHERE  ( PlannedDate >= Getdate() )
       AND ',' + EventEnumDays + ',' LIKE '%,' + Cast(Datepart(dw, PlannedDate) AS CHAR(1)) + ',%'
        OR EventEnumDays IS NULL
ORDER  BY EventID,
          PlannedDate
OPTION (maxrecursion 0) 

24

সঞ্চিত পদ্ধতিতে টেম্পটেবল কীভাবে ব্যবহার করবেন?

পদক্ষেপ এখানে:

টেম্প টেবিল তৈরি করুন

-- CREATE TEMP TABLE 
Create Table #MyTempTable (
    EmployeeID int
);

অন্তর্ভুক্ত টেম্প নির্বাচন টেবিলে ডেটা নির্বাচন করুন

-- INSERT COMMON DATA
Insert Into #MyTempTable
Select EmployeeID from [EmployeeMaster] Where EmployeeID between 1 and 100

টেম্প টেবিল নির্বাচন করুন (আপনি এখন এই নির্বাচিত ক্যোয়ারীটি ব্যবহার করতে পারেন)

Select EmployeeID from #MyTempTable

শেষ পদক্ষেপটি ড্রপ করুন

Drop Table #MyTempTable

আমি আশা করি এটি সাহায্য করবে সহজ এবং পরিষ্কার :)


5
এটি প্রশ্নের উত্তর দেয় না। ওপি বিশেষত সিলেক্ট ইনটো দিয়ে এটি কীভাবে করবেন তা জিজ্ঞাসা করেছিলেন এবং এই প্রতিক্রিয়া তা করে না।
ডেভআইএনএজেড

4
Select      Eventname, 
            count(Eventname) as 'Counts'
INTO        #TEMPTABLE                                                                                
FROM        tblevent
where       Eventname like 'A%'
Group by    Eventname
order by    count(Eventname)

এখানে ক্লজটি ব্যবহার করে টেবিলটি সরাসরি তৈরি করা হয়


3
এটি বিদ্যমান উত্তর থেকে কীভাবে আলাদা?
zx8754

1

মৃত্যুদণ্ড কার্যকর হওয়ার পরে টেবিল তৈরি করে এমন কোনও প্রশ্নের উত্তরগুলির জন্য এখানে সামান্য পরিবর্তন রয়েছে: (আপনাকে প্রথমে টেবিলটি তৈরি করতে হবে না):

SELECT * INTO #Temp
FROM (
select OptionNo, OptionName from Options where OptionActive = 1
) as X
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.