我很难解决这个问题,希望有人可以帮我解决一些提示或建议。
我在SQL中有一个包含3列的表:
Pencil Sales Notebook Sales Pen Sales
1 2 3
9 5 6
7 8 9
我使用“Union all”和每列的总和进行了查询。
我的查询如下:
select sum(pencilsales) from table1 union all
select sum(notebooksales) from table1 union all
select sum(pensales) from table1
它给了我以下内容:
(No Column Name)
17
15
18
但我想知道是否有一种方法可以使用“desc”或类似的东西对这个新查询进行排序,并添加一个新列,说明哪一行是每行,如下所示:
Sales Name
18 Pen Sales
17 Pencil Sales
15 Notebook Sales
希望你能帮助我提出想法并提前感谢你们:)
答案 0 :(得分:1)
select * from
(
select 'Pencil Sales' as Name, sum(pencilsales) as sales from table1
union all
select 'Notebook Sales', sum(notebooksales) from table1
union all
select 'Pen Sales', sum(pensales) from table1
) t order by sales desc
答案 1 :(得分:0)
这是UNPIVOT的一个非常好的候选人
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<Noticia>(t => t.IsValid);
modelBuilder.Ignore<Noticia>(t => t.ValidationResult);
base.OnModelCreating(modelBuilder);
}
答案 2 :(得分:0)
您无法在MySql中取消隐藏。子查询得到你想要的。
答案 3 :(得分:0)
在这种情况下通常不使用UNION。 SQL Server可以方便地PIVOT/UNPIVOT执行此操作。
此外,如果您有像#&#34; Sales Associate&#34;这样的密钥,您的问题就会更容易理解。
CREATE TABLE Sales
(
[Sales Assoicate Id] varchar(10),
[Pencil Sales] int,
[Notebook Sales] int,
[Pen Sales] int
);
INSERT INTO Sales ([Sales Associate Id],[Pencil Sales],[Notebook Sales],[Pen Sales]) VALUES ('Morgan',1,2,3);
INSERT INTO Sales ([Sales Associate Id],[Pencil Sales],[Notebook Sales],[Pen Sales]) VALUES ('Jane',9,5,6);
INSERT INTO Sales ([Sales Associate Id],[Pencil Sales],[Notebook Sales],[Pen Sales]) VALUES ('Jeff',7,8,9);
看起来像:
Sales Associate Id Pencil Sales Notebook Sales Pen Sales
Morgan 1 2 3
Jane 9 5 6
Jeff 7 8 9
要获得结果,请问他们如何使用UNPIVOT!
SELECT SUM(Sales) Sales,
Name
FROM Sales
UNPIVOT
(Sales FOR Name IN ([Pencil Sales],[Notebook Sales],[Pen Sales])) SalesSummary
GROUP BY Name
结果:
Sales Name
15 Notebook Sales
18 Pen Sales
17 Pencil Sales