• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Vấn tin nhóm và Sum số lượng có điều kiện ?

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Điều hành viên: Điều hành

dong
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 611
Ngày tham gia: T.Năm 03/04/2008 7:46 am
Has thanked: 12 time
Been thanked: 1 time

Vấn tin nhóm và Sum số lượng có điều kiện ?

Gửi bàigửi bởi dong » CN 27/11/2016 4:47 pm

Mình có vấn tin SQL Server sau:

Mã: Chọn hết

SELECT     TOP (100) PERCENT dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP, SUM(dbo.TABHDBHCT.SOLUONG)
                      * CASE WHEN [TRAHANG] = 0 THEN 1 ELSE - 1 END AS SL, dbo.TABHDBHCT.TRAHANG
FROM         dbo.TABHDBHCT INNER JOIN
                      dbo.TABHDBH ON dbo.TABHDBHCT.MASOPHIEU = dbo.TABHDBH.IDSOPHIEU
WHERE     (dbo.TABHDBH.TTTHANHTOAN = 1 OR
                      dbo.TABHDBH.TTTHANHTOAN = 2) AND (dbo.TABHDBH.NGAY BETWEEN '11/01/2016' AND '11/30/2016')
GROUP BY dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP, dbo.TABHDBHCT.TRAHANG
ORDER BY dbo.TABHDBHCT.TENSP

kết quả:
4567954   cà phê nestle    6   False
4654126   Cocacola           10   False
4654126   Cocacola           -6   True
5647954   hat ana           10   False
456789   hạt điều đà lạt   12   False
456789   hạt điều đà lạt   -4   True
1234568   mat han gcafe    7   False
1234568   mat han gcafe   -2   True
6492455   pesi                   11   False
6492455   pesi                   -5   True

yêu cầu là GROUP và SUM cột SOLUONG, nếu TRAHANG = true thì cột SOLUONG mang số dương ngược lại cột SOLUONG mang giá trị âm, cột SL không nhóm và không sum được, nếu mình bỏ cột TRAHANG sẽ báo lỗi trong câu lệnh SELECT, nhờ các bạn nhặc sạn hộ vấn tin trên

Mã: Chọn hết

//Vấn tin bị báo lỗi
SELECT     TOP (100) PERCENT dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP, SUM(dbo.TABHDBHCT.SOLUONG)
                      * CASE WHEN [TRAHANG] = 0 THEN 1 ELSE - 1 END AS SL
FROM         dbo.TABHDBHCT INNER JOIN
                      dbo.TABHDBH ON dbo.TABHDBHCT.MASOPHIEU = dbo.TABHDBH.IDSOPHIEU
WHERE     (dbo.TABHDBH.TTTHANHTOAN = 1 OR
                      dbo.TABHDBH.TTTHANHTOAN = 2) AND (dbo.TABHDBH.NGAY BETWEEN '11/01/2016' AND '11/30/2016')
GROUP BY dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP
ORDER BY dbo.TABHDBHCT.TENSP



FlyingFox
Guru
Guru
Bài viết: 772
Ngày tham gia: T.Tư 20/04/2011 9:56 am
Been thanked: 311 time

Re: Vấn tin nhóm và Sum số lượng có điều kiện ?

Gửi bàigửi bởi FlyingFox » T.Tư 30/11/2016 5:22 am

Có thể viết query như sau:
  1. SELECT TOP (100) PERCENT dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP,
  2.        SUM(CASE WHEN [TRAHANG] = 0 THEN dbo.TABHDBHCT.SOLUONG ELSE - 1 * dbo.TABHDBHCT.SOLUONG END) AS SL
  3.   FROM dbo.TABHDBHCT INNER JOIN
  4.        dbo.TABHDBH ON dbo.TABHDBHCT.MASOPHIEU = dbo.TABHDBH.IDSOPHIEU
  5. WHERE (dbo.TABHDBH.TTTHANHTOAN = 1 OR dbo.TABHDBH.TTTHANHTOAN = 2) AND
  6.       (dbo.TABHDBH.NGAY BETWEEN '11/01/2016' AND '11/30/2016')
  7. GROUP BY dbo.TABHDBHCT.MAVACH_SP, dbo.TABHDBHCT.TENSP
  8. ORDER BY dbo.TABHDBHCT.TENSP

dong
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 611
Ngày tham gia: T.Năm 03/04/2008 7:46 am
Has thanked: 12 time
Been thanked: 1 time

Re: Vấn tin nhóm và Sum số lượng có điều kiện ?

Gửi bàigửi bởi dong » T.Tư 30/11/2016 11:48 am

Chạy được rồi cám ơn bạn nhé

Hình đại diện của người dùng
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 302
Ngày tham gia: T.Tư 12/11/2008 10:08 pm
Has thanked: 25 time
Been thanked: 19 time

Re: Vấn tin nhóm và Sum số lượng có điều kiện ?

Gửi bàigửi bởi tanta » T.Ba 06/12/2016 5:25 pm

Bạn FlyingFox vẫn còn hoạt động bên này ah.
Mỗi lần vào diễn đàn thấy bạn trả lời là y như rằng mọi vấn đề sẽ được giải quyết.
Có inbox làm quen với bạn nhưng không thấy bạn trả lời, chắc bạn bận quá.


Quay về “Ứng dụng Quản lý và Cơ sở dữ liệu”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách