Sunday, December 3, 2023

Các câu lệnh truy vấn cơ bản trong SQL

 Tìm ID trùng nhau trong SQL

  SELECT TOP(1) BRPOSItemID  FROM Fact_OrderDetail

    GROUP BY BRPOSItemID

HAVING COUNT(BRPOSItemID) >1

Giải thích: Với BRPOSItemID  là khóa chính của bảng dữ liệu, duy nhất và không lặp lại


Sử dụng Pivot để đếm các trạng thái BILL

Select  BRPOSStoreName as IDStore,[E-Wallet],[Sample],[Credit],[Cancel],[Cash],[Gift]

From

(select T2.BRPOSStoreName, BRPmtDetailType,BRPOSNo

from BJFactSample as T1

Left join BJStoreName as T2 on T2.BRPOSStoreID = T1.FK_BRPOSStoreID

where YEAR(BRPOSDate) =2023 and Month(BRPOSDate) =10) P

PIVOT (

COUNT (BRPOSNo) FOR BRPmtDetailType IN

([E-Wallet],[Sample],[Credit],[Cancel],[Cash],[Gift])

) AS PVT



-- Muốn đếm số Bill trong 1 khoản tiền, bài này có thể áp dụng đếm số ngày công nợ quá hạn

--Count các số bill có số tiền lớn hơn:

 50 K<Bill < 100K

100 K<Bill < 150K

Sử dụng Pivot trong bài này, ngoài ra cũng có thể sử dụng count kết hợp group by cũng được. đang sẵn viết câu Pivot trên nên ví dụ này biết pivot luôn

Select  CuaHang, T50,T100,T120 from

(select BRPOSStoreName as CuaHang, SumofTotalAPIAus,

(Case

when (SumofTotalAPIAus <100000 and SumofTotalAPIAus >=50000) then 'T50'

when (SumofTotalAPIAus <150000 and SumofTotalAPIAus >=100000) then 'T100'

else 'T120' end )as tien

from Fact_OrderSumary

where YEAR(BRPOSDate)=2023) p

pivot 

(

count(SumofTotalAPIAus) for tien in (T50,T100,T120)

)as PVT



Kiểm tra lịch sử câu lệnh đã truy vấn trong SQL server

SELECT top(10) Txt.query_text_id, Txt.query_sql_text, Pl.plan_id, Qry.*

FROM sys.query_store_plan AS Pl

INNER JOIN sys.query_store_query AS Qry

    ON Pl.query_id = Qry.query_id

INNER JOIN sys.query_store_query_text AS Txt

    ON Qry.query_text_id = Txt.query_text_id

order by initial_compile_start_time DESC