প্রশ্নের সাথে টেম্প টেবিলের মধ্যে ডেটা .োকান


144

আমার একটি বিদ্যমান ক্যোয়ারী রয়েছে যা বর্তমান তথ্যকে আউটপুট করে এবং আমি এটি কোনও টেম্প টেবিলের মধ্যে toোকাতে চাই, তবে এতে কিছু সমস্যা হচ্ছে। কীভাবে এটি করা যায় তা সম্পর্কে কারও কিছু অন্তর্দৃষ্টি থাকবে?

এখানে একটি উদাহরণ

SELECT *
FROM  (SELECT Received,
              Total,
              Answer,
              ( CASE
                  WHEN application LIKE '%STUFF%' THEN 'MORESTUFF'
                END ) AS application
       FROM   FirstTable
       WHERE  Recieved = 1
              AND application = 'MORESTUFF'
       GROUP  BY CASE
                   WHEN application LIKE '%STUFF%' THEN 'MORESTUFF'
                 END) data
WHERE  application LIKE isNull('%MORESTUFF%', '%') 

এটি আমার ডেটা বর্তমানে যেভাবে প্রয়োজন তা আউটপুট বলে মনে হচ্ছে তবে আমি এটি একটি টেম্প টেবিলের মধ্যে দিয়ে যেতে চাই। আমার সমস্যাটি হ'ল আমি এসকিউএল ক্যোয়ারীতে বেশ নতুন এবং এটি করার কোনও উপায় খুঁজে পাচ্ছি না। বা যদি এটি সম্ভব হয়। যদি এটি সম্ভব না হয়, তবে আমি WHERE application LIKE isNull('%MORESTUFF%','%')কোনও টেম্প টেবিলের মধ্যে যে ডেটাটি খুঁজছি তা পাওয়ার কী আরও ভাল উপায় আছে ?


2
একটি #tempটেবিলের মধ্যে যা ইতিমধ্যে বিদ্যমান বা এটি একটি নতুন তৈরি করতে হবে?
মার্টিন স্মিথ

1
@ মার্টিনস্মিথ - এটি একটি নতুন বিষয় হবে।
scapegoat17

1
LIKE ISNULL('%MORESTUFF%', '%')সবসময় একই মত LIKE '%MORESTUFF%'হবে, তাই না? যেহেতু '% MORESTUFF%' (স্ট্রিং আক্ষরিক) কখনই বাতিল হয় না?
gnud

উত্তর:


187
SELECT *
INTO #Temp
FROM

  (SELECT
     Received,
     Total,
     Answer,
     (CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) AS application
   FROM
     FirstTable
   WHERE
     Recieved = 1 AND
     application = 'MORESTUFF'
   GROUP BY
     CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) data
WHERE
  application LIKE
    isNull(
      '%MORESTUFF%',
      '%')

148

এসকিউএল সার্ভার আর 2 2008 এর নীচের ASধারাটির প্রয়োজন :

SELECT * 
INTO #temp
FROM (
    SELECT col1, col2
    FROM table1
) AS x

কোয়েরিটি AS xশেষ না করে ব্যর্থ হয়েছিল।


সম্পাদনা

এসএস ২০১6 ব্যবহার করার সময় এটিরও দরকার ছিল, শেষটি যুক্ত as tকরতে হয়েছিল।

 Select * into #result from (SELECT * FROM  #temp where [id] = @id) as t //<-- as t

5
মজাদার. আমি ঠিক একই সমস্যা ছিল। শেষে "হিসাবে [এক্স]" যুক্ত করা সমস্ত কিছু ঠিকঠাক করে তোলে। কেন?
Godfathr

5
@ গুডফ্যাথার কারণ এটি ক্লজ থেকে প্রাপ্ত একটি টেবিল ব্যবহার করছে
wootscootinboogie

35

এটি করার দ্রুততম উপায় হ'ল "নির্বাচন করুন" কমান্ড যেমন

SELECT * INTO #TempTableName
FROM....

এটি একটি নতুন টেবিল তৈরি করবে, আপনাকে এটি আগাম তৈরি করতে হবে না।


# টিম্পটবেলনেমে কলামগুলি যুক্ত করা সম্ভব?
ফ্রেনকিবি

@ ফ্রেঙ্কিবি হ্যাঁ, একবার টেবিল তৈরি হয়ে গেলে আপনি ক্লাব বিবরণ যুক্ত করতে পারেন
ইউরি গ্যালান্টার

12

ব্যক্তিগতভাবে, এটি কীভাবে ব্যবহার করতে হবে তা নির্ধারণ করতে আমার একটু হাতের দরকার ছিল এবং এটি সত্যিই দুর্দান্ত।

IF(OBJECT_ID('tempdb..#TEMP') IS NOT NULL) BEGIN DROP TABLE #TEMP END
        SELECT *
            INTO #TEMP
            FROM (
            The query you want to use many times
            ) AS X

SELECT * FROM #TEMP WHERE THIS = THAT
SELECT * FROM #TEMP WHERE THIS <> THAT
SELECT COL1,COL3 FROM #TEMP WHERE THIS > THAT

DROP TABLE #TEMP

8

আপনি এটির মতো এটি করতে পারেন:

INSERT INTO myTable (colum1, column2)
SELECT column1, column2 FROM OtherTable;

কেবল কলামগুলি ডেটাটাইপের মতো সংখ্যায় মিলছে কিনা তা নিশ্চিত করুন।


5

এটা চেষ্টা কর:

SELECT *
INTO #Temp
FROM 
(select * from tblorders where busidate ='2016-11-24' and locationID=12
) as X

এক্স সহ এলিফ ব্যবহার করুন যাতে এটি স্ক্রিপ্ট এবং ফলাফলকে ব্যর্থ করে না।



2

এটা সম্ভব. এইভাবে চেষ্টা করুন:

Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
 from Spotfy 
    where ArtistName = 'BossaDoSamba'
 group by ArtistName;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.