Sql 将select语句转换为报表
如果我想根据从多个表中获取数据的人员和项目,就销售情况做一个月的报告,是否可能。通过在我的数据库中使用select语句,我可以得到如下结果:Sql 将select语句转换为报表,sql,database,pivot,azure-sql-managed-instance,Sql,Database,Pivot,Azure Sql Managed Instance,如果我想根据从多个表中获取数据的人员和项目,就销售情况做一个月的报告,是否可能。通过在我的数据库中使用select语句,我可以得到如下结果: | Month | Items | Name | Sales | | ------ | -------| ------- | ------ | | Nov20 | Books | Alex | 38.40 | | Nov20 | Books | Frank | 27.90 | | Nov20 | Books | Is
| Month | Items | Name | Sales |
| ------ | -------| ------- | ------ |
| Nov20 | Books | Alex | 38.40 |
| Nov20 | Books | Frank | 27.90 |
| Nov20 | Books | Isaac | 70.95 |
| Nov20 | Books | Jack | 71.00 |
| Nov20 | Books | Kevin | 22.20 |
| Nov20 | Clock | Charles |265.30 |
| Nov20 | Clock | Kevin |199.90 |
| Nov20 | Desks | Frank |999.99 |
| Nov20 | Desks | Jack |890.00 |
| Nov20 | Glass | Charles | 31.00 |
| Nov20 | Glass | Eric | 54.00 |
用于获取结果的SQL语句是:
select * from inventory as i
inner join sales as s on s.items = i.items
inner join employee as e on e.name = s.name
where month = 'Nov20'
order by s.items, s.name
现在,如果我需要将结果转换为类似下图的报告,是否可能
| Item | Alex | Charles | Eric | Frank | Isaac | Jack | Kevin |
| ----- | ----- | ------- | ----- | ----- | ----- | ----- | ----- |
| Books | 38.40 | ------- | ----- | 27.90 | 70.95 | ----- | ----- |
| Clock | ----- | 265.30 | ----- | ----- | ----- | ----- | 199.90|
| Desks | ----- | ------- | ----- |999.99 | ----- |890.00 | ----- |
| Glass | ----- | 31.00 | 54.00 | ----- | ----- | ----- | ----- |
我曾尝试使用PIVOT语句按项分组,但是,这似乎没有给出预期的结果。尝试的另一种方法是为([names here])中的[name]使用透视项。然而,我到目前为止还没有成功。先谢谢你
编辑:
这很可能使用GROUPBY子句和CASE语句。对我有效的代码是:
select i.items,
sum(case when s.name = 'Alex' then Sales else 0 end) as Alex,
sum(case when s.name = 'Charles' then Sales else 0 end) as Charles
--etc.
from inventory as i
inner join sales as s on s.items = i.items
inner join employee as e on e.name = s.name
where month = 'Nov20
group by i.items;
希望这将有助于其他人在未来。(这回答了我自己的问题,但如果您有其他输入或更好的方法,请与我们分享!谢谢)。pivot子句的使用很大程度上取决于您使用的DBMS。所以请标记DBMS。