傳回結果集資料分割內某資料列的序號,序號從 1 開始,每個資料分割第一個資料列的序號是 1。
select top 10 row_number() over (order by CONTACTID) AS Cnt , [ContactID] , [Title] , [FirstName] , [LastName] from [AdventureWorks].[Person].[Contact][SQL]為查詢的結果加上序號(ROW_NUMBER,RANK,OVER)
ROW_NUMBER (Transact-SQL)
RANK (Transact-SQL)
REPLICATE (Transact-SQL)
[SQL]幫某個欄位填入補0並且加字頭的順號語法
LPAD and RPAD functions in SQL
CHARINDEX 與 PATINDEX 的比較
CHARINDEX 與 PATINDEX 函數會傳回您指定的模式的起始位置。PATINDEX 可以使用萬用字元,但 CHARINDEX 不能。
資料類型轉換
如果您希望 Transact-SQL 程式碼符合 ISO,請使用 CAST 來取代 CONVERT。而使用 CONVERT 來代替 CAST,則可利用 CONVERT 的樣式功能。
ORACLE可以在WHERE條件的IN,使用多個欄位,但SQL SERVER不支援此語法 = =|||
--SQL SERVER 無法執行
select * from Table1 a
where (a.f1, a.f2) in
(select b.f1, b.f2 from Table2 b);
--老外的解法
SELECT * FROM table1 a
WHERE EXISTS (
    SELECT * FROM table2 b
    WHERE a.f1 = b.f1 
      AND a.f2 = b.f2 );
--加上Group By
;WITH CTE AS (
 SELECT g.CustomerId, g.Barcode
   FROM Products g
  GROUP BY g.CustomerId, g.Barcode
  HAVING COUNT(1) > 1
)
SELECT *
  FROM Products p
  WHERE EXISTS (
   SELECT * FROM CTE c 
    WHERE c.CustomerId = p.CustomerId
      AND c.Barcode = p.Barcode
  )
  ORDER BY p.Barcode1
參考:Efficient EXISTS
SQL WHERE.. IN clause multiple columns
“Where IN” with multiple columns (SQL Server)
OUTPUT 子句 (Transact-SQL)
 
 
沒有留言:
張貼留言