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

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

19
การนับ DISTINCT บนหลายคอลัมน์
มีวิธีที่ดีกว่าในการทำแบบสอบถามเช่นนี้: SELECT COUNT(*) FROM (SELECT DISTINCT DocumentId, DocumentSessionId FROM DocumentOutputItems) AS internalQuery ฉันต้องนับจำนวนรายการที่แตกต่างจากตารางนี้ แต่ความแตกต่างอยู่เหนือสองคอลัมน์ แบบสอบถามของฉันทำงานได้ดี แต่ฉันสงสัยว่าฉันจะได้ผลลัพธ์สุดท้ายโดยใช้เพียงแบบสอบถามเดียว (โดยไม่ใช้แบบสอบถามย่อย)

30
แปลงหมายเลขเดือนเป็นฟังก์ชันชื่อเดือนใน SQL
ฉันเก็บเดือนไว้ใน SQL Server เป็น 1,2,3,4, ... 12 ฉันต้องการแสดงเป็นมกราคมกุมภาพันธ์เป็นต้นมีฟังก์ชันใน SQL Server เช่น MonthName (1) = January หรือไม่ ฉันพยายามหลีกเลี่ยงคำสั่ง CASE ถ้าเป็นไปได้


17
คุณจะตัดทอนตารางทั้งหมดในฐานข้อมูลโดยใช้ TSQL ได้อย่างไร
ฉันมีสภาพแวดล้อมการทดสอบสำหรับฐานข้อมูลที่ฉันต้องการโหลดด้วยข้อมูลใหม่ที่จุดเริ่มต้นของรอบการทดสอบ ฉันไม่ได้สนใจในการสร้างฐานข้อมูลทั้งหมดใหม่เพียงแค่ "ตั้งค่าใหม่" ข้อมูล เป็นวิธีที่ดีที่สุดในการลบข้อมูลทั้งหมดจากตารางทั้งหมดโดยใช้ TSQL อะไร มีขั้นตอนการจัดเก็บมุมมองและอื่น ๆ ของระบบที่สามารถใช้ได้หรือไม่? ฉันไม่ต้องการที่จะสร้างและรักษางบงบที่ถูกตัดทอนสำหรับแต่ละตารางด้วยตนเองฉันต้องการให้มันเป็นแบบไดนามิก
204 sql-server  tsql 

14
SQL: IF clause ภายใน WHERE clause
เป็นไปได้ไหมที่จะใช้ประโยคIFภายในWHERE clause ใน MS SQL? ตัวอย่าง: WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'
203 sql  sql-server  tsql 

7
แบบสอบถาม PIVOT แบบไดนามิกของ SQL Server
ฉันได้รับมอบหมายให้คิดวิธีแปลข้อมูลต่อไปนี้: date category amount 1/1/2012 ABC 1000.00 2/1/2012 DEF 500.00 2/1/2012 GHI 800.00 2/10/2012 DEF 700.00 3/1/2012 ABC 1100.00 ลงในต่อไปนี้: date ABC DEF GHI 1/1/2012 1000.00 2/1/2012 500.00 2/1/2012 800.00 2/10/2012 700.00 3/1/2012 1100.00 จุดว่างสามารถเป็น NULL หรือช่องว่างก็ได้และหมวดหมู่จะต้องเป็นแบบไดนามิก ข้อแม้ที่เป็นไปได้อีกประการหนึ่งสำหรับเรื่องนี้คือเราจะเรียกใช้แบบสอบถามในความจุที่ จำกัด ซึ่งหมายความว่าตารางชั่วคราวหมด ฉันพยายามค้นคว้าและลงจอดPIVOTแต่เนื่องจากฉันไม่เคยใช้มันมาก่อนที่ฉันจะไม่เข้าใจจริงๆแม้ว่าฉันจะพยายามหาวิธีที่ดีที่สุดก็ตาม ใครช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหม
202 sql  sql-server  tsql  pivot 

15
ฉันจะจัดรูปแบบตัวเลขด้วยเครื่องหมายจุลภาคใน T-SQL ได้อย่างไร
ฉันใช้คำสั่งการบริหารและรวบรวมผลจากsp_spaceusedใน SQL Server 2008 เพื่อดูอัตราส่วนพื้นที่ข้อมูล / ดัชนีของบางตารางในฐานข้อมูลของฉัน แน่นอนฉันได้รับจำนวนมากในผลลัพธ์และตาของฉันเริ่มแวววาว มันจะสะดวกมากถ้าฉันสามารถจัดรูปแบบตัวเลขเหล่านั้นด้วยเครื่องหมายจุลภาค (987654321 กลายเป็น 987,654,321) ขำ ๆ ที่หลายปีที่ผ่านมาฉันเคยใช้ SQL Server ปัญหานี้ไม่เคยเกิดขึ้นเพราะส่วนใหญ่ฉันจะทำการฟอร์แมตที่เลเยอร์การนำเสนอ แต่ในกรณีนี้ผลลัพธ์ T-SQL ใน SSMS เป็นการนำเสนอ ฉันได้พิจารณาว่าจะสร้าง CLF UDF อย่างง่ายเพื่อแก้ปัญหานี้ แต่ดูเหมือนว่าสิ่งนี้ควรจะสามารถทำได้ใน T-SQL แบบเก่าธรรมดา ดังนั้นฉันจะถามคำถามที่นี่ - คุณจะจัดรูปแบบตัวเลขในวานิลลา T-SQL ได้อย่างไร
202 sql-server  tsql 

8
ฉันจะวาง foreign key ใน SQL Server ได้อย่างไร
ฉันสร้างคีย์ต่างประเทศ (ใน SQL Server) โดย: alter table company add CountryID varchar(3); alter table company add constraint Company_CountryID_FK foreign key(CountryID) references Country; ฉันเรียกใช้แบบสอบถามนี้: alter table company drop column CountryID; และฉันได้รับข้อผิดพลาดนี้: เกี่ยวกับข่าวสาร 5074 ระดับ 16 สถานะ 4 บรรทัด 2 วัตถุ 'Company_CountryID_FK' ขึ้นอยู่กับคอลัมน์ 'CountryID' เกี่ยวกับข่าวสาร 4922 ระดับ 16 สถานะ 9 บรรทัด 2 เปลี่ยนแปลงตาราง …
201 sql-server  tsql 


9
ฟังก์ชันหลายค่าที่มีค่าเป็นตารางเทียบกับฟังก์ชันที่มีค่าของตารางแบบอินไลน์
ตัวอย่างที่จะแสดงเพียงใส่ในกรณี: ค่าในตาราง Inline CREATE FUNCTION MyNS.GetUnshippedOrders() RETURNS TABLE AS RETURN SELECT a.SaleId, a.CustomerID, b.Qty FROM Sales.Sales a INNER JOIN Sales.SaleDetail b ON a.SaleId = b.SaleId INNER JOIN Production.Product c ON b.ProductID = c.ProductID WHERE a.ShipDate IS NULL GO ตารางคำสั่งหลายค่า CREATE FUNCTION MyNS.GetLastShipped(@CustomerID INT) RETURNS @CustomerOrder TABLE (SaleOrderID INT NOT NULL, …


14
วิธีการปล่อยข้อ จำกัด เริ่มต้นของ SQL โดยไม่ทราบชื่อ
ใน Microsoft SQL Server ฉันรู้แบบสอบถามเพื่อตรวจสอบว่ามีข้อ จำกัด เริ่มต้นสำหรับคอลัมน์และวางข้อ จำกัด เริ่มต้นคือ: IF EXISTS(SELECT * FROM sysconstraints WHERE id=OBJECT_ID('SomeTable') AND COL_NAME(id,colid)='ColName' AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1) ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName แต่เนื่องจาก typo ในรุ่นก่อนหน้าของฐานข้อมูลชื่อของข้อ จำกัด ที่อาจจะหรือDF_SomeTable_ColNameDF_SmoeTable_ColName ฉันจะลบข้อ จำกัด เริ่มต้นโดยไม่มีข้อผิดพลาด SQL ได้อย่างไร ชื่อข้อ จำกัด ที่เป็นค่าเริ่มต้นจะไม่แสดงในตาราง INFORMATION_SCHEMA ซึ่งทำให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้น ดังนั้นบางอย่างเช่น 'ลบข้อ จำกัด เริ่มต้นในตาราง / คอลัมน์นี้' …
196 sql  sql-server  tsql 

14
จะอัพเดตคอลัมน์ข้อมูลประจำตัวใน SQL Server ได้อย่างไร
ฉันมีฐานข้อมูล SQL Server และฉันต้องการเปลี่ยนคอลัมน์ข้อมูลประจำตัวเพราะมันเริ่มต้นด้วยจำนวนมาก10010และมันเกี่ยวข้องกับตารางอื่นตอนนี้ฉันมี 200 ระเบียนและฉันต้องการแก้ไขปัญหานี้ก่อนที่จะเพิ่มระเบียน วิธีที่ดีที่สุดในการเปลี่ยนหรือรีเซ็ตคอลัมน์นี้คืออะไร

18
ตัดทอน (ไม่ใช่รอบ) ทศนิยมใน SQL Server
ฉันกำลังพยายามหาวิธีที่ดีที่สุดในการตัดหรือวางทศนิยมพิเศษใน SQL โดยไม่ต้องปัดเศษ ตัวอย่างเช่น: declare @value decimal(18,2) set @value = 123.456 รอบนี้จะโดยอัตโนมัติ@valueจะเป็น123.46ซึ่งเป็นสิ่งที่ดีในกรณีส่วนใหญ่ อย่างไรก็ตามสำหรับโครงการนี้ฉันไม่ต้องการสิ่งนั้น มีวิธีง่ายๆในการตัดส่วนทศนิยมที่ไม่ต้องการหรือไม่? ฉันรู้ว่าฉันสามารถใช้left()ฟังก์ชันและแปลงกลับเป็นทศนิยม มีวิธีอื่นอีกไหม?
194 sql  sql-server  tsql  rounding 

10
วิธีเขียน foreach ใน SQL Server
ฉันพยายามที่จะบรรลุบางสิ่งบางอย่างตามสายงานของแต่ละคนซึ่งฉันต้องการรับ Ids ของคำสั่ง select ที่ส่งคืนและใช้แต่ละข้อ DECLARE @i int DECLARE @PractitionerId int DECLARE @numrows int DECLARE @Practitioner TABLE ( idx smallint Primary Key IDENTITY(1,1) , PractitionerId int ) INSERT @Practitioner SELECT distinct PractitionerId FROM Practitioner SET @i = 1 SET @numrows = (SELECT COUNT(*) FROM Practitioner) IF @numrows > 0 WHILE …
194 sql-server  tsql 

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