คำถามติดแท็ก tsql

T-SQL (ภาษาคิวรีธุรกรรมเชิงโครงสร้าง) เป็นส่วนเสริมของฟังก์ชัน SQL ที่รองรับโดย Sybase ASE และ Microsoft SQL Server อย่าใช้แท็กนี้สำหรับการสืบค้นที่เกี่ยวข้องกับ MySQL, PostgreSql, Oracle (Pl / SQL) โปรดทราบว่ารหัส SQL ที่กำลังเขียนโดยใช้ LINQ จะไม่เป็นส่วนหนึ่งของแท็กนี้ด้วย แท็กนี้สร้างขึ้นโดยเฉพาะสำหรับการเขียนโปรแกรม SQL ขั้นสูงโดยใช้ Microsoft SQL Server

3
ฉันต้องการใช้คำสั่ง CASE เพื่ออัปเดตบางระเบียนใน sql server 2005
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END ) คำสั่งใช้งานได้ตามวัตถุประสงค์ แต่เงื่อนไขอื่นจะตรวจสอบทุกระเบียนในตาราง มีวิธีใดบ้างที่ฉันจะออกจากแถวที่ไม่ได้รับผลกระทบเหมือนเดิม?

10
แยกชั่วโมงจาก DateTime (SQL Server 2005)
ฉันสามารถดึงเดือนและวันโดยใช้,Day(Date()) ฉันไม่สามารถดึงชั่วโมงด้วยMonth(Date()) HOUR(Date())ฉันได้รับข้อผิดพลาดดังต่อไปนี้ 'HOUR' is not a recognized built-in function name. ฉันจะดึงชั่วโมงได้อย่างไร

10
วิธีรับ sp_executesql ส่งผลให้เกิดตัวแปร?
ฉันมี SQL ไดนามิกที่จำเป็นต้องใช้ในการประมวลผลจากนั้นฉันต้องเก็บผลลัพธ์ไว้ในตัวแปร ฉันรู้ว่าฉันสามารถใช้sp_executesqlแต่ไม่สามารถหาตัวอย่างที่ชัดเจนเกี่ยวกับวิธีการทำเช่นนี้
178 tsql  dynamic-sql 

4
สามารถระบุได้เพียงนิพจน์เดียวในรายการที่เลือกเมื่อไม่ได้แนะนำเคียวรีย่อยด้วย EXISTS
ข้อความค้นหาของฉันเป็นดังนี้และมีแบบสอบถามย่อยอยู่ภายใน: select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC) ข้อผิดพลาดที่ฉันได้รับคือ ... Only one expression can be specified in the select list when the …
178 sql  sql-server  tsql  exists 

13
วิธีการคำนวณเปอร์เซ็นต์ด้วยคำสั่ง SQL
ฉันมีตาราง SQL Server ที่มีผู้ใช้และเกรดของพวกเขา เพื่อประโยชน์ของความเรียบง่ายช่วยให้เพียงแค่บอกว่ามี 2 คอลัมน์ - &name gradeดังนั้นแถวทั่วไปจะเป็นชื่อ: "John Doe", Grade: "A" ฉันกำลังมองหาคำสั่ง SQL หนึ่งคำสั่งที่จะค้นหาเปอร์เซ็นต์ของคำตอบที่เป็นไปได้ทั้งหมด (A, B, C, ฯลฯ ... ) นอกจากนี้ยังมีวิธีการทำเช่นนี้โดยไม่ต้องกำหนดคำตอบที่เป็นไปได้ทั้งหมด (ฟิลด์ข้อความแบบเปิด - ผู้ใช้สามารถป้อน 'ผ่าน / ล้มเหลว', 'ไม่มี' ฯลฯ ... ) ผลลัพธ์สุดท้ายที่ฉันต้องการคือ A: 5%, B: 15%, C: 40%, ฯลฯ ...
177 sql  sql-server  tsql 

10
เปลี่ยนชื่อ Schema ของตารางใน SQL
ฉันต้องการเปลี่ยนชื่อสคีมาของตารางEmployeesในฐานข้อมูล ในตารางปัจจุบันEmployeesฐานข้อมูลชื่อสกีคือผมต้องการที่จะเปลี่ยนไปdbo exeฉันจะทำมันได้อย่างไร ตัวอย่าง: จาก dbo.Employees ถึง exe.Employees ฉันลองกับคำถามนี้: ALTER SCHEMA exe TRANSFER dbo.Employees แต่นี่ทำให้ฉันมีข้อผิดพลาด: ไม่สามารถแก้ไข schema 'exe' ได้เนื่องจากไม่มีอยู่หรือคุณไม่ได้รับอนุญาต ฉันพลาดอะไร?
175 sql  sql-server  tsql  schema 

8
ตัวแปร SQL เพื่อเก็บรายการของจำนวนเต็ม
ฉันพยายามที่จะดีบักรายงาน SQL ของคนอื่นและวางคิวรีรายงานพื้นฐานลงในหน้าต่างแบบสอบถามของ SQL 2012 หนึ่งในพารามิเตอร์ที่รายงานถามคือรายการจำนวนเต็ม สิ่งนี้สามารถทำได้ในรายงานผ่านกล่องดร็อปดาวน์แบบเลือกได้หลายแบบ แบบสอบถามพื้นฐานของรายงานใช้รายการจำนวนเต็มนี้ในwhereข้อเช่น select * from TabA where TabA.ID in (@listOfIDs) ฉันไม่ต้องการแก้ไขแบบสอบถามที่ฉันกำลังดีบั๊ก แต่ฉันไม่สามารถหาวิธีสร้างตัวแปรบน SQL Server ที่สามารถเก็บข้อมูลประเภทนี้เพื่อทดสอบได้ เช่น declare @listOfIDs int set listOfIDs = 1,2,3,4 ไม่มีประเภทข้อมูลที่สามารถเก็บรายการจำนวนเต็มดังนั้นฉันจะเรียกใช้แบบสอบถามรายงานใน SQL Server ของฉันด้วยค่าเดียวกันกับรายงานได้อย่างไร

4
ฉันจะหลีกเลี่ยงอัญประกาศคู่ในแอตทริบิวต์ในสตริง XML ใน T-SQL ได้อย่างไร
คำถามที่ค่อนข้างง่าย - ฉันมีคุณลักษณะที่ฉันต้องการให้มีการเสนอราคาสองเท่าฉันจะหนีพวกเขาได้อย่างไร ฉันพยายามแล้ว \" "" \\" และฉันได้สร้างตัวแปร @xml ทั้งประเภท xml และ varchar (สูงสุด) สำหรับพวกเขาทั้งหมด declare @xml xml --(or varchar(max) tried both) set @xml = '<transaction><item value="hi "mom" lol" ItemId="106" ItemType="2" instanceId="215923801" dataSetId="1" /></transaction>' declare @xh int exec sp_xml_preparedocument @xh OUTPUT, @xml insert into @commits --I declare the table, just …
174 xml  tsql  escaping 

5
ลำดับของคอลัมน์ในดัชนีมีความสำคัญมากแค่ไหน?
ฉันได้ยินมาว่าคุณควรใส่คอลัมน์ที่จะเลือกมากที่สุดในตอนต้นของการประกาศดัชนี ตัวอย่าง: CREATE NONCLUSTERED INDEX MyINDX on Table1 ( MostSelective, SecondMost, Least ) ก่อนอื่นสิ่งที่ฉันพูดถูกต้อง? ถ้าเป็นเช่นนั้นฉันมีแนวโน้มที่จะเห็นความแตกต่างอย่างมากในประสิทธิภาพโดยการจัดเรียงลำดับของคอลัมน์ในดัชนีของฉันอีกครั้งหรือเป็นแบบฝึกหัด เหตุผลที่ฉันถามเพราะหลังจากใส่เคียวรีผ่าน DTA แล้วขอแนะนำให้ฉันสร้างดัชนีที่มีคอลัมน์เดียวกันเกือบทั้งหมดในดัชนีนั้นเป็นดัชนีที่มีอยู่ในลำดับที่แตกต่างกัน ฉันกำลังพิจารณาเพียงแค่เพิ่มคอลัมน์ที่ขาดหายไปในดัชนีที่มีอยู่และเรียกมันว่าดี คิด?

6
SQL หรือแม้แต่ TSQL ทัวริงเสร็จสมบูรณ์หรือไม่
สิ่งนี้เกิดขึ้นที่สำนักงานวันนี้ ฉันไม่มีแผนที่จะทำสิ่งนั้น แต่ในทางทฤษฎีคุณสามารถเขียนคอมไพเลอร์ใน SQL ได้ไหม? เมื่อฉันมองแวบแรกมันก็ดูจะสมบูรณ์แม้ว่าจะมีปัญหามากมายสำหรับชั้นเรียน ถ้ามันไม่ได้ทำให้เสร็จสมบูรณ์มันจะต้องมีอะไรบ้าง? หมายเหตุ: ฉันไม่มีความปรารถนาที่จะทำอะไรเช่นเขียนคอมไพเลอร์ใน SQL ฉันรู้ว่ามันเป็นเรื่องโง่ที่จะทำดังนั้นถ้าเราสามารถหลีกเลี่ยงการอภิปรายฉันจะขอบคุณมัน

10
ชื่อตารางเป็นตัวแปร
ฉันพยายามเรียกใช้แบบสอบถามนี้: declare @tablename varchar(50) set @tablename = 'test' select * from @tablename สิ่งนี้ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: เกี่ยวกับ 1087 ระดับ 16 สถานะ 1 บรรทัด 5 ต้องประกาศตัวแปรตาราง "@tablename" วิธีที่ถูกต้องในการตั้งชื่อตารางเป็นแบบไดนามิกคืออะไร

15
คำนวณผลรวมสะสมใน SQL Server
ลองนึกภาพตารางต่อไปนี้ (เรียกว่าTestTable): id somedate somevalue -- -------- --------- 45 01/Jan/09 3 23 08/Jan/09 5 12 02/Feb/09 0 77 14/Feb/09 7 39 20/Feb/09 34 33 02/Mar/09 6 ฉันต้องการข้อความค้นหาที่ส่งคืนผลรวมการเรียงลำดับตามวันที่ที่ต้องการเช่น: id somedate somevalue runningtotal -- -------- --------- ------------ 45 01/Jan/09 3 3 23 08/Jan/09 5 8 12 02/Feb/09 0 8 77 14/Feb/09 7 …

4
ฟังก์ชัน IndexOf ใน T-SQL
เมื่อระบุคอลัมน์ที่อยู่อีเมลฉันจำเป็นต้องค้นหาตำแหน่งของเครื่องหมาย @ สำหรับการสตริงย่อย อะไรคือสิ่งที่indexofฟังก์ชั่นสำหรับสตริงใน T-SQL? ค้นหาสิ่งที่ส่งคืนตำแหน่งของสตริงย่อยภายในสตริง ใน C # var s = "abcde"; s.IndexOf('c'); // yields 2
168 sql  sql-server  tsql  string 

13
วิธีจัดกลุ่มตามชั่วโมงหรือ 10 นาที
เช่นเมื่อฉันทำ SELECT [Date] FROM [FRIIB].[dbo].[ArchiveAnalog] GROUP BY [Date] ฉันจะระบุช่วงเวลากลุ่มได้อย่างไร MS SQL 2008 2nd แก้ไข ฉันกำลังพยายาม SELECT MIN([Date]) AS RecT, AVG(Value) FROM [FRIIB].[dbo].[ArchiveAnalog] GROUP BY (DATEPART(MINUTE, [Date]) / 10) ORDER BY RecT เปลี่ยน% 10 เป็น / 10 เป็นไปได้ไหมที่จะสร้างเอาต์พุตวันที่โดยไม่มีมิลลิวินาที?

8
อ้างถึงคอลัมน์ชื่อแทนใน WHERE Clause
SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120 ฉันเข้าใจ "ชื่อคอลัมน์ไม่ถูกต้อง daysdiff" Maxlogtm เป็นฟิลด์ datetime มันเป็นสิ่งเล็กน้อยที่ทำให้ฉันบ้า

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