Tạo thêm một cột trong kết quả truy vấn

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?

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

@Twot_Leo_L2t

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?