Nếu một bảng T có hai cột A và B, mà ta muốn tổng hợp (aggregate) hàm f(A, B) nhưng không muốn thay đổi gì trong T thì nên làm thế nào?
Tạo thêm một cột trong kết quả truy vấn
Cái này chắc sẽ cho bạn manh mối gì đó:
https://docs.microsoft.com/en-us/sql/relational-databases/user-defined-functions/create-user-defined-aggregates?view=sql-server-2017
B muốn hàm nào trong aggregate?
nói cụ thể hơn để người khác giúp được chung chung thế hơi khó nha.
Nếu bạn muốn + - * chia giữa A và B thì :
select A, B , (A+B) as [SUM] from T
Ý mình là như thế này:
A B f(A, B) <-- chỉ tồn tại cho câu lệnh này
8 4 32
5 19 95
6 7 42
1 6 6
> sum(f(A, B)) = 175
Thì cũng phải define vào SQL Server một cái hàm như vậy thì mới dùng được chứ.
nhân giữa 2 cột A và B sau đố tính tổng lại.
SELECT SUM(A*B) FROM T;
2 Likes
Nếu là ntnày thì là phép toán nhân mà :-?
Hay là ý bạn muốn tạo ra 1 column ở đó là sum của tổng A và B?
Nếu thế thì câu lệnh ntnày:
select sum(newCol) as NewSum
from (
select (T.A * T.B) as newCol
from sumtable as T
) [newTable]
cho bạn thêm 1 cách hiển thị nữa
select T.A as A,T.B as B, (T.A * T.B) as sumcol
from sumtable as T
UNION ALL
SELECT null,null,Sum(newCol)
from (
select (T.A * T.B) as newCol
from sumtable as T
)temp
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?