Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将select语句转换为报表_Sql_Database_Pivot_Azure Sql Managed Instance - Fatal编程技术网

Sql 将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

如果我想根据从多个表中获取数据的人员和项目,就销售情况做一个月的报告,是否可能。通过在我的数据库中使用select语句,我可以得到如下结果:

|  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。