我想从两个表中选择并使用此查询显示我的结果:
CREATE TABLE Buy_Table
(
buy_id int identity primary key,
user_id int,
amount decimal (18,2)
);
go
INSERT INTO Buy_Table
(user_id, amount)
VALUES
('1', 10),
('1', 8),
('1', 20),
('3', 1),
('2', 2);
go
CREATE TABLE Sell_Table
(
sell_id int identity primary key,
user_id int,
amount decimal (18,2)
);
go
INSERT INTO Sell_Table
(user_id, amount)
VALUES
('1', 10),
('1', 8),
('1', 20),
('3', 3),
('2', 3);
go
select
[user_id],
'Buy' as [Type],
buy_id as [ID],
amount
from Buy_Table
union all
select
[user_id],
'Sell',
sell_id,
amount
from Sell_Table
order by
[user_id],
[ID],
[Type]
但是上面的查询将返回user_id的每一行,如此
我想在网格中显示我的结果:
这可以在查询本身而不是操纵网格中完成吗? THX
答案 0 :(得分:2)
评论太长了。
是的,可以在查询中完成。不,你不想这样做。 SQL查询的结果集通常被认为是表。它们可用于查询;他们有行和列。
执行您想要做的事情违反了关系数据库中“table-ness”的一些原则。最重要的是行的顺序现在很重要。在关系数据库中,表表示无序集。如果没有排序,您就不知道第二行和后续行的所在位置。不得不从另一行“借用”信息似乎是一种不好的做法,因为它是。另一个问题是第一列现在有一个含糊不清的含义,具体取决于行是否有值。
因此,最好在应用程序层中完成,因为其目的是 - 可能 - 满足某些所需的输出标准。 是在SQL中获取此格式的有趣练习,尽管最好的方法因数据库而异。也就是说,做一个有趣的练习并不能让这个好主意。