• 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

Moderator: Điều hành

dong
Thành viên ưu tú
Thành viên ưu tú
Posts: 700
Joined: Thu 03/04/2008 7:46 am
Has thanked: 13 times
Been thanked: 2 times

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

Postby dong » Sun 27/11/2016 4:47 pm

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

Code: Select all

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

Code: Select all

//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
Posts: 832
Joined: Wed 20/04/2011 9:56 am
Been thanked: 325 times

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

Postby FlyingFox » Wed 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ú
Posts: 700
Joined: Thu 03/04/2008 7:46 am
Has thanked: 13 times
Been thanked: 2 times

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

Postby dong » Wed 30/11/2016 11:48 am

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

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

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

Postby tanta » Tue 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á.


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

Who is online

Users browsing this forum: No registered users and 3 guests