Truy vấn trong SQL?

Blue Softs Liên hệ QC

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,782
Được thích
943
Nếu tài khoản của bạn của bạn chỉ được quyền Read thì việc tạo Table sẽ không được, nhưng Table tạm vẫn được, khi bạn không sử dụng SQL nữa Table đó sẽ tự xóa, tôi chỉnh lại code trên bằng việc sử dụng Table tạm
Mã:
SELECT TDK.[MA_HANG],TDK.[KHO_LUU_TRU],TDK.[LOTNO], TDK.[SO_LUONG]  [TONDAUKY], 0  [NHAP],0  [XUAT], TDK.[SO_LUONG]  [TON]
into #A
FROM [KHOHANG].[dbo].[KQ_KIEM_KE] TDK
WHERE TDK.[NGAY_KIEM_KE] = (SELECT MAX([NGAY_KIEM_KE]) FROM [KHOHANG].[dbo].[KQ_KIEM_KE])
AND TDK.[KHO_LUU_TRU] LIKE N'%A%'
UNION ALL
SELECT XN.[MA_HANG],XN.[KHO_LUU_TRU],XN.[LOTNO], 0 AS [TONDAUKY],
(case when XN.[KIEU] in (1,3)  And XN.[KHO_LUU_TRU] LIKE N'%A%' then XN.[SO_LUONG] else 0 end)  [NHAP],
(case when XN.[KIEU] =2 And XN.[KHO_LUU_TRU] LIKE N'%A%'then XN.[SO_LUONG] else 0 end)  [XUAT],
(case when XN.[KIEU] in (1,3)  And XN.[KHO_LUU_TRU] LIKE N'%A%' then XN.[SO_LUONG] else 0 end)-(case when XN.[KIEU] =2 And XN.[KHO_LUU_TRU] LIKE N'%A%'then XN.[SO_LUONG] else 0 end) [TON]
FROM [KHOHANG].[dbo].[NHAP_XUAT] XN
WHERE LEFT(XN.[NGAY_THANG],6) >= (SELECT MAX([NGAY_KIEM_KE]) FROM [KHOHANG].[dbo].[KQ_KIEM_KE]

SELECT NXT.[MA_HANG],NXT.[KHO_LUU_TRU],NXT.[LOTNO],
SUM(TONDAUKY)  [TONDAUKY],SUM(NHAP)  [NHAP],SUM(XUAT)  [XUAT],SUM(TON)  [TON]
FROM #A
group by NXT.[MA_HANG],[NXT.KHO_LUU_TRU],NXT.[LOTNO]
Việc sử dụng Subquery trong các môi trường khác không biết sao chứ trong SQL server bạn cứ sử dụng bình thường, trừ khi một sub được gọi nhiều hơn một lần thì nên lưu sub đó vào bảng tạm để tranh query nhiều lần
Dạ, vâng cảm ơn bạn đã chỉ thêm cho OT biết về cách dùng bảng tạm ạ.
OT cứ tưởng tạo cái gì đó thì dùng lệnh create... thì mới đáng lo, còn lệnh trên thì selec có lẽ chắc là không vấn đề gì ạ.
 

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,782
Được thích
943
Xin chào tất cả các bạn,
Vẫn là vấn đề liên quan đến câu lệnh truy vấn lấy dữ liệu NXT ạ, cụ thể là:
OT có 1 câu truy vấn bên dưới, nếu chạy toàn bộ câu lệnh này thì gọi là CAU LENH1: BAO BAO GOM KHO_LUU_TRU
Thì là câu lệnh 1 và trả về dữ liệu hình ảnh bên dưới của câu lệnh 1,bao gồm cột KHO_LUU_TRU:

Còn nếu chạy khúc giữa, từ :
...2) CAU LENH2: KHONG BAO GOM KHO_LUU_TRU
đến
----------------------------->KET THUC CAU LENH 2
Thì là câu lệnh 2 và trả về dữ liệu hình ảnh bên dưới của câu lệnh 2, không bao gồm cột KHO_LUU_TRU:

Nhưng các câu truy vấn trên chỉ lấy được 1 mã hàng hoặc 1 kho lưu trữ mà không thể lấy nhiều mã hàng hay nhiều kho lưu trữ.
Nhờ các bạn giúp đỡ OT câu lệnh để xử lý được vấn đề này với ạ.


OT xin phép gửi câu lệnh & ảnh kèm dữ liệu mô phỏng để các bạn xem & giúp đỡ ạ:

Mã:
---1) CAU LENH1: BAO BAO GOM KHO_LUU_TRU
SELECT Z.[MA_HANG],T.[KHO_LUU_TRU],Z.[LOTNO],MAX(Z.TONDAUKY) AS [TONDAUKY],MAX(Z.NHAP) AS [NHAP],MAX(Z.XUAT) AS [XUAT],MAX(Z.TON) AS [TON]
FROM (

---2) CAU LENH2: KHONG BAO GOM KHO_LUU_TRU
SELECT NXT.[MA_HANG],NXT.[LOTNO],
SUM(TONDAUKY) AS [TONDAUKY],SUM(NHAP) AS [NHAP],SUM(XUAT) AS [XUAT],SUM(TON) AS [TON]
FROM (
SELECT TDK.[MA_HANG],TDK.[KHO_LUU_TRU],TDK.[LOTNO], TDK.[SO_LUONG] AS [TONDAUKY], 0 AS [NHAP],0 AS [XUAT], TDK.[SO_LUONG] AS [TON]
FROM [KHOHANG].[dbo].[KQ_KIEM_KE] TDK
WHERE TDK.[NGAY_KIEM_KE] = (SELECT MAX([NGAY_KIEM_KE]) FROM [KHOHANG].[dbo].[KQ_KIEM_KE])
AND (TDK.[MA_HANG]= N'MH0001') AND (TDK.[KHO_LUU_TRU] LIKE N'%A%')
AND (TDK.[LOTNO]=N'L246357')
UNION ALL
SELECT XN.[MA_HANG],XN.[KHO_LUU_TRU],XN.[LOTNO], 0 AS [TONDAUKY],
IIF((XN.[KIEU]=1 And XN.[KHO_LUU_TRU] LIKE N'%A%') or (XN.[KIEU]=3 And XN.[KHO_XUAT_HANG] LIKE N'%A%') ,XN.[SO_LUONG],0) AS [NHAP],
IIF((XN.[KIEU]>=2 And XN.[KHO_LUU_TRU] LIKE N'%A%'),XN.[SO_LUONG],0) AS [XUAT],
IIF((XN.[KIEU]=1 And XN.[KHO_LUU_TRU] LIKE N'%A%') or (XN.[KIEU]=3 And XN.[KHO_XUAT_HANG] LIKE N'%A%'),XN.[SO_LUONG],0)-IIF((XN.[KIEU]>=2 And XN.[KHO_LUU_TRU] LIKE N'%A%'),XN.[SO_LUONG],0 ) AS [TON]
FROM [KHOHANG].[dbo].[NHAP_XUAT] XN
WHERE LEFT(XN.[NGAY_THANG],6) >= (SELECT MAX([NGAY_KIEM_KE]) FROM [KHOHANG].[dbo].[KQ_KIEM_KE])
-----------------------------KET THUC CAU LENH 2

) Z
INNER JOIN [KHOHANG].[dbo].[KQ_KIEM_KE] T ON  Z.MA_HANG=T.MA_HANG
GROUP BY   Z.[MA_HANG],T.[KHO_LUU_TRU],Z.[LOTNO]
-----------------------------KET THUC CAU LENH 1

Xin chào các bạn,
OT xin gửi dữ liệu bài trên để nhờ các bạn xem và giúp đỡ ạ:


1602481918012.png
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia
18/3/08
Bài viết
8,141
Được thích
15,443
Giới tính
Nam
Nghề nghiệp
Làm ruộng.
Xin chào các bạn,
OT xin gửi dữ liệu bài trên để nhờ các bạn xem và giúp đỡ ạ:


View attachment 247219
Em vào bài sau của anh @Nguyễn Duy Tuân sẽ có câu lệnh XNT em cần nhé.
 

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,782
Được thích
943
Em vào bài sau của anh @Nguyễn Duy Tuân sẽ có câu lệnh XNT em cần nhé.
Thế ạ anh, vâng để OT coi bên đó ạ.
Cảm ơn Hai Lúa đã chỉ dẫn
 
Top Bottom