Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Database 如何在DB2中创建透视表?_Database_Db2_Pivot - Fatal编程技术网

Database 如何在DB2中创建透视表?

Database 如何在DB2中创建透视表?,database,db2,pivot,Database,Db2,Pivot,我有一张像这样的桌子: | Date | Week | Name | No | Count | |-----------|------|--------|----|-------| | 2019/4/1 | 14 | John | 1 | 1 | | 2019/4/1 | 14 | Mary | 2 | 1 | | 2019/4/9 | 15 | Kevin | 3 | 2 | | 2019/4/9 | 15 | Jo

我有一张像这样的桌子:

| Date      | Week | Name   | No | Count |
|-----------|------|--------|----|-------|
| 2019/4/1  |  14  | John   | 1  | 1     |
| 2019/4/1  |  14  | Mary   | 2  | 1     |
| 2019/4/9  |  15  | Kevin  | 3  | 2     |
| 2019/4/9  |  15  | John   | 4  | 1     |
| 2019/4/9  |  15  | Jessie | 5  | 1     |
| 2019/4/18 |  16  | Kevin  | 6  | 1     |
| 2019/4/18 |  16  | John   | 7  | 1     |
| 2019/4/18 |  16  | Jessie | 8  | 2     |
| 2019/4/18 |  16  | Mary   | 9  | 3     |
| 2019/4/18 |  16  | Mary   | 10 | 1     |
| 2019/4/18 |  16  | Jessie | 11 | 1     |
| 2019/4/24 |  17  | Mary   | 12 | 1     |
| 2019/4/24 |  17  | Jessie | 13 | 1     |
我想做的是计算每周的总人数。 并按总数排序

我知道分组可以做到这一点,我试过了,但就是想不出来

这就是我所期望的:

| Name   | 14 | 15 | 16 | 17 | Total |
|--------|----|----|----|----|-------|
| Mary   | 1  | 0  | 4  | 1  | 6     |
| Jessie | 0  | 1  | 3  | 1  | 5     |
| John   | 1  | 1  | 1  | 0  | 3     |
| Kevin  | 0  | 2  | 1  | 0  | 3     |
| Total  | 2  | 4  | 9  | 2  | 17    |
我该怎么办

Select [Name] 
 ,sum(case when [Week] = 14 then [Count] else 0 end) as Week14
 ,sum(case when [Week] = 15 then [Count] else 0 end) as Week15
 ,sum(case when [Week] = 16 then [Count] else 0 end) as Week16
 ,sum(case when [Week] = 17 then [Count] else 0 end) as Week17
 ,sum([Count]) as Total
from [table]
group by [Name]
order by Total
我不确定您使用的是哪个版本的DB2(LUW/zOS/I),所以这是一个一般性的答案。周数可以变得更加灵活,但需要对周数进行一定量的硬编码


我不确定您使用的是哪个版本的DB2(LUW/zOS/I),所以这是一个一般性的答案。周数可以变得更加灵活,但需要对周数进行一定量的硬编码

你可以使用GROUP BY和横向连接从垂直方向到水平方向变换你的场你可以使用GROUP BY和横向连接从垂直方向到水平方向变换你的场汉克斯,它确实显示了我想要的。是的,每周的周数是不同的。那么,“一定量的硬编码”是什么意思呢?你可以根据需要使用
(week(Current_Date)-1)
或任何你需要的东西,使周数足够动态,以随周变化。硬编码将需要在您报告的周数(列数)内。在这种情况下,4周。你需要使整个声明动态化,并根据需要增加周数,或者将其硬编码。谢谢你的灵感。我用我的Delphi代码做的:)谢谢,它确实显示了我想要的。是的,每周的周数是不同的。那么,“一定量的硬编码”是什么意思呢?你可以根据需要使用
(week(Current_Date)-1)
或任何你需要的东西,使周数足够动态,以随周变化。硬编码将需要在您报告的周数(列数)内。在这种情况下,4周。你需要使整个声明动态化,并根据需要增加周数,或者将其硬编码。谢谢你的灵感。我在我的Delphi代码中实现了:)