คำถามติดแท็ก sql-server-2005

ใช้แท็กนี้สำหรับคำถามเฉพาะของ SQL Server ของ Microsoft รุ่น 2005


29
แทรกผลลัพธ์ของกระบวนงานที่เก็บไว้ในตารางชั่วคราว
ฉันจะทำSELECT * INTO [temp table] FROM [stored procedure]อย่างไร ไม่ได้FROM [Table]และไม่มีการกำหนด[temp table]? Select ข้อมูลทั้งหมดจาก BusinessLineไปยังtmpBusLineทำงานได้ดี select * into tmpBusLine from BusinessLine ฉันพยายามแบบเดียวกัน แต่ใช้ stored procedureที่คืนค่านั้นไม่เหมือนกัน select * into tmpBusLine from exec getBusinessLineHistory '16 Mar 2009' ข้อความที่ส่งออก: ข่าวสารเกี่ยวกับ 156, ระดับ 15, สถานะ 1, บรรทัด 2 ไวยากรณ์ไม่ถูกต้องใกล้กับคำหลัก 'exec' ฉันได้อ่านหลายตัวอย่างของการสร้างตารางชั่วคราวที่มีโครงสร้างเดียวกันกับขั้นตอนการจัดเก็บผลลัพธ์ที่ทำงานได้ดี แต่มันจะดีที่จะไม่ให้คอลัมน์ใด ๆ

16
ฉันจะทำคำสั่ง UPDATE กับ JOIN ใน SQL Server ได้อย่างไร
ฉันต้องการอัปเดตตารางนี้ในSQL Serverด้วยข้อมูลจากตาราง 'พาเรนต์' ดูด้านล่าง: ตาราง: การขาย id (int) udid (int) assid (int) ตาราง: ud id (int) assid (int) sale.assidud.assidมีค่าที่ถูกต้องเพื่อการปรับปรุง คำถามอะไรที่จะทำเช่นนี้? ฉันกำลังคิดjoinแต่ฉันไม่แน่ใจว่ามันเป็นไปได้

28
ตรวจสอบว่ามีตารางอยู่ใน SQL Server หรือไม่
ฉันต้องการให้เป็นการอภิปรายขั้นสุดท้ายเกี่ยวกับวิธีตรวจสอบว่ามีตารางอยู่ใน SQL Server 2000/2005 โดยใช้คำสั่ง SQL หรือไม่ เมื่อคุณได้รับคำตอบจาก Google คุณจะได้คำตอบที่แตกต่างกันมากมาย มีวิธีอย่างเป็นทางการ / ย้อนกลับและไปข้างหน้าในการทำมัน? นี่เป็นวิธีที่เป็นไปได้สองวิธี วิธีใดที่หนึ่งในสองคือมาตรฐาน / วิธีที่ดีที่สุดในการทำมัน? วิธีแรก: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='mytablename') SELECT 1 AS res ELSE SELECT 0 AS res; วิธีที่สอง: IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL SELECT 1 AS res …

9
เคียวรีอัพเดต SQL โดยใช้การรวม
ฉันต้องอัปเดตฟิลด์ด้วยค่าที่ส่งคืนโดยการเข้าร่วม 3 ตาราง ตัวอย่าง: select im.itemid ,im.sku as iSku ,gm.SKU as GSKU ,mm.ManufacturerId as ManuId ,mm.ManufacturerName ,im.mf_item_number ,mm.ManufacturerID from item_master im, group_master gm, Manufacturer_Master mm where im.mf_item_number like 'STA%' and im.sku=gm.sku and gm.ManufacturerID = mm.ManufacturerID and gm.manufacturerID=34 ฉันต้องการอัปเดตmf_item_numberค่าฟิลด์ของตารางitem_masterด้วยค่าอื่น ๆ ซึ่งเข้าร่วมในเงื่อนไขข้างต้น ฉันจะทำสิ่งนี้ใน MS SQL Server ได้อย่างไร

14
ตรวจสอบว่ามีตารางชั่วคราวและลบหากมีอยู่ก่อนสร้างตารางชั่วคราว
ฉันใช้รหัสต่อไปนี้เพื่อตรวจสอบว่ามีตารางชั่วคราวอยู่หรือไม่และวางตารางหากมีอยู่ก่อนสร้างอีกครั้ง มันทำงานได้ดีตราบใดที่ฉันไม่เปลี่ยนคอลัมน์ หากฉันเพิ่มคอลัมน์ในภายหลังมันจะให้ข้อผิดพลาดว่า "คอลัมน์ไม่ถูกต้อง" โปรดแจ้งให้เราทราบว่าฉันทำอะไรผิด IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT, ) select company, stepid, fieldid from #Results --Works fine to this point IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results CREATE TABLE #Results ( Company CHAR(3), StepId …

15
แทรกหลายแถวโดยไม่ต้องทำซ้ำคำสั่ง“ INSERT INTO …”?
ฉันรู้ว่าฉันเคยทำสิ่งนี้มาหลายปีแล้ว แต่ฉันจำไวยากรณ์ไม่ได้และไม่พบที่ใดก็ได้เนื่องจากดึงเอกสารช่วยเหลือและบทความจำนวนมากเกี่ยวกับ "การนำเข้าจำนวนมาก" นี่คือสิ่งที่ฉันต้องการจะทำ แต่ไวยากรณ์ไม่ถูกต้อง ... โปรดคนที่เคยทำมาก่อนช่วยฉันด้วย :) INSERT INTO dbo.MyTable (ID, Name) VALUES (123, 'Timmy'), (124, 'Jonny'), (125, 'Sally') ฉันรู้ว่านี่อยู่ใกล้กับไวยากรณ์ที่ถูกต้อง ฉันอาจต้องการคำว่า "เป็นกลุ่ม" ในนั้นหรือบางสิ่งบางอย่างฉันจำไม่ได้ ความคิดใด ๆ ฉันต้องการสิ่งนี้สำหรับฐานข้อมูล SQL Server 2005 ฉันได้ลองใช้รหัสนี้แล้วโดยไม่มีประโยชน์: DECLARE @blah TABLE ( ID INT NOT NULL PRIMARY KEY, Name VARCHAR(100) NOT NULL ) INSERT INTO @blah (ID, …

20
รับ 1 แถวแรกของแต่ละกลุ่ม
ฉันมีตารางที่ฉันต้องการรับรายการล่าสุดสำหรับแต่ละกลุ่ม นี่คือตาราง: DocumentStatusLogs โต๊ะ |ID| DocumentID | Status | DateCreated | | 2| 1 | S1 | 7/29/2011 | | 3| 1 | S2 | 7/30/2011 | | 6| 1 | S1 | 8/02/2011 | | 1| 2 | S1 | 7/28/2011 | | 4| 2 | S2 | 7/30/2011 …

28
ไม่สามารถตัดทอนตารางได้เนื่องจากมีการอ้างอิงโดยข้อ จำกัด ของคีย์ต่างประเทศหรือไม่
การใช้ MSSQL2005 ฉันสามารถตัดทอนตารางด้วยข้อ จำกัด foreign key ได้หรือไม่ถ้าฉันตัดทอนตารางลูก (ตารางที่มีคีย์หลักของความสัมพันธ์ FK) เป็นอันดับแรก ฉันรู้ว่าฉันสามารถ ใช้DELETEคำสั่งที่ไม่มีตำแหน่งและจากนั้นจึงRESEEDระบุตัวตน ลบ FK ตัดทอนตารางและสร้าง FK ใหม่ ฉันคิดว่าตราบใดที่ฉันตัดทอนตารางลูกต่อหน้าพ่อแม่ฉันก็โอเคโดยไม่ทำตามตัวเลือกข้างต้น แต่ฉันได้รับข้อผิดพลาดนี้: ไม่สามารถตัดทอนตาราง 'TableName' ได้เนื่องจากกำลังถูกอ้างถึงโดยข้อ จำกัด ของ FOREIGN KEY

8
เหตุใดจึงต้องใช้คำสั่ง INCLUDE เมื่อสร้างดัชนี?
ในขณะที่เรียนสำหรับการสอบ 70-433 ผมสังเกตเห็นว่าคุณสามารถสร้างดัชนีครอบคลุมในหนึ่งในสองวิธีต่อไปนี้ CREATE INDEX idx1 ON MyTable (Col1, Col2, Col3) -- หรือ -- CREATE INDEX idx1 ON MyTable (Col1) INCLUDE (Col2, Col3) ประโยค INCLUDE เป็นของใหม่สำหรับฉัน ทำไมคุณจะใช้มันและแนวทางใดบ้างที่คุณจะแนะนำในการพิจารณาว่าจะสร้างดัชนีครอบคลุมโดยมีหรือไม่มีประโยครวมหรือไม่?

7
แบบสอบถาม SQL Server - การเลือก COUNT (*) ด้วย DISTINCT
ใน SQL Server 2005 ฉันมีตาราง cm_production ที่แสดงรหัสทั้งหมดที่นำไปผลิต ตารางมี ticket_number, program_type และ program_name และ push_number พร้อมกับคอลัมน์อื่น ๆ เป้าหมาย: นับชื่อโปรแกรม DISTINCT ทั้งหมดตามประเภทโปรแกรมและหมายเลขพุช สิ่งที่ฉันมีอยู่คือ: DECLARE @push_number INT; SET @push_number = [HERE_ADD_NUMBER]; SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type นี่ทำให้ฉันอยู่ตรงนั้น แต่นับชื่อโปรแกรมทั้งหมดไม่ใช่ชื่อที่ต่างกัน (ซึ่งฉันไม่คิดว่าจะทำในแบบสอบถามนั้น) ฉันเดาว่าฉันไม่สามารถคาดเดาวิธีที่จะบอกให้นับเฉพาะชื่อโปรแกรมที่แตกต่างได้โดยไม่ต้องเลือก หรือบางสิ่งบางอย่าง.

6
คุณจะระบุหมายเลขพอร์ตอื่นใน SQL Management Studio ได้อย่างไร
ฉันกำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ Microsoft SQL 2005 ซึ่งไม่ได้อยู่ที่พอร์ต 1433 ฉันจะระบุหมายเลขพอร์ตอื่นได้อย่างไรเมื่อเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ SQL Management Studio

19
วิธีการหลีกเลี่ยงข้อผิดพลาด "หารด้วยศูนย์" ใน SQL?
ฉันมีข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ 8134 ระดับ 16 สถานะ 1 เส้น 1 หารด้วยข้อผิดพลาดที่พบ เป็นวิธีที่ดีที่สุดในการเขียนรหัส SQL เพื่อที่ฉันจะไม่เห็นข้อความแสดงข้อผิดพลาดนี้อีกครั้งคืออะไร ฉันสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้: เพิ่มส่วนคำสั่ง where เพื่อให้ตัวหารไม่เป็นศูนย์ หรือ ฉันสามารถเพิ่มคำสั่งกรณีเพื่อให้มีการดูแลเป็นพิเศษสำหรับศูนย์ เป็นวิธีที่ดีที่สุดในการใช้NULLIFประโยค? มีวิธีที่ดีกว่าหรือจะบังคับใช้วิธีนี้ได้อย่างไร

10
จำลองฟังก์ชัน group_concat MySQL ใน Microsoft SQL Server 2005 หรือไม่
ฉันกำลังพยายามย้ายแอพที่ใช้ MySQL ไปยัง Microsoft SQL Server 2005 (ไม่ใช่ตัวเลือก แต่เป็นชีวิต) ในแอปดั้งเดิมเราใช้งบ ANSI-SQL เกือบทั้งหมดโดยมีข้อยกเว้นที่สำคัญอย่างหนึ่ง - เราใช้group_concatฟังก์ชั่นของ MySQL ค่อนข้างบ่อย group_concatโดยวิธีการนี้จะได้รับตารางพูดชื่อพนักงานและโครงการ ... SELECT empName, projID FROM project_members; ผลตอบแทน: ANDY | A100 ANDY | B391 ANDY | X010 TOM | A100 TOM | A510 ... และนี่คือสิ่งที่คุณจะได้รับจาก group_concat: SELECT empName, group_concat(projID SEPARATOR ' / ') FROM …

23
มีข้อเสียใด ๆ ในการใช้ nvarchar (MAX) เสมอหรือไม่?
ใน SQL Server 2005 มีข้อเสียใด ๆ ในการสร้างฟิลด์อักขระทั้งหมด nvarchar (MAX) แทนที่จะระบุความยาวอย่างชัดเจนเช่น nvarchar (255) หรือไม่ (นอกเหนือจากความชัดเจนที่คุณไม่สามารถจำกัดความยาวของฟิลด์ที่ระดับฐานข้อมูล)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.