有没有人过去常常使用tablefunc多个变量,而不是只使用行名?文档说明:
对于具有相同row_name值的所有行,"额外"列应该是相同的.
我不知道如何在没有组合我想要转向的列的情况下如何做到这一点(我非常怀疑它会给我我需要的速度).一种可能的方法是将实体设为数字,并将其作为毫秒添加到localt,但这似乎是一种不稳定的方式.
我编辑了回答这个问题的数据:PostgreSQL Crosstab Query.
CREATE TEMP TABLE t4 (
timeof timestamp
,entity character
,status integer
,ct integer);
INSERT INTO t4 VALUES
('2012-01-01', 'a', 1, 1)
,('2012-01-01', 'a', 0, 2)
,('2012-01-02', 'b', 1, 3)
,('2012-01-02', 'c', 0, 4);
SELECT * FROM crosstab(
'SELECT timeof, entity, status, ct
FROM t4
ORDER BY 1,2,3'
,$$VALUES (1::text), (0::text)$$)
AS ct ("Section" timestamp, "Attribute" character, "1" int, "0" int);
Run Code Online (Sandbox Code Playgroud)
返回:
Section | Attribute | 1 …
我创建了一个查询,用于提取他们在一个月的时间内完成的学生ID和用餐项目.我想计算一个学生在这个月的每个项目(早餐,午餐,小吃)的数量.
看来,在数据透视表报表中访问句柄的数据太多,所以我希望有一个我可以运行的SQL查询.
这是我创建的当前查询:
SELECT April2013.SID, MenuItems.MealType AS Apr2013Meal
FROM April2013 LEFT JOIN MenuItems ON MenuItems.Item=April2013.Item;
Run Code Online (Sandbox Code Playgroud)
当前输出:
+-----+-----------+
| SID | Meal |
+-----+-----------+
| 001 | Lunch |
| 002 | Lunch |
| 003 | Breakfast |
| 004 | Snack |
| 005 | Lunch |
| 006 | Lunch |
| 001 | Breakfast |
| 003 | Snack |
| 004 | Breakfast |
+-----+-----------+
Run Code Online (Sandbox Code Playgroud)
这是我希望它看起来的样子:
+-----+-----------+-------+---------+
| SID | Breakfast | Lunch | Snack | …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下列的表
defect_id, developer_name, status, summary, root_cause,
Secondary_RC, description, Comments, environment_name
Run Code Online (Sandbox Code Playgroud)
该列root_cause具有Enviro,Requi,Dev,TSc,TD,Unkn作为其值,列environment_name具有QA1,QA2,QA3
我需要以下面的格式准备一份报告
Enviro Requi Dev TSc TD Unkn Total
QA1 9 1 14 17 2 3 46
QA2 8 1 14 0 5 1 29
QA3 1 1 7 0 0 1 10
Total 18 3 35 17 7 5 85
Run Code Online (Sandbox Code Playgroud)
我准备报告直到
Enviro Requi Dev TSc TD Unkn
QA1 9 1 14 17 2 3
QA2 8 1 14 0 5 1
QA3 1 1 7 0 0 …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
import pandas as pd
datelisttemp = pd.date_range('1/1/2014', periods=3, freq='D')
s = list(datelisttemp)*3
s.sort()
df = pd.DataFrame({'BORDER':['GERMANY','FRANCE','ITALY','GERMANY','FRANCE','ITALY','GERMANY','FRANCE','ITALY' ], 'HOUR1':[2 ,2 ,2 ,4 ,4 ,4 ,6 ,6, 6],'HOUR2':[3 ,3 ,3, 5 ,5 ,5, 7, 7, 7], 'HOUR3':[8 ,8 ,8, 12 ,12 ,12, 99, 99, 99]}, index=s)
Run Code Online (Sandbox Code Playgroud)
这给了我:
Out[458]: df
BORDER HOUR1 HOUR2 HOUR3
2014-01-01 GERMANY 2 3 8
2014-01-01 FRANCE 2 3 8
2014-01-01 ITALY 2 3 8
2014-01-02 GERMANY 4 5 12
2014-01-02 FRANCE 4 5 12
2014-01-02 ITALY 4 …Run Code Online (Sandbox Code Playgroud) 我有一个包含产品ID和名称的表格,另一个表格包含这些产品在特定日期的库存.比如Item1有6库存1-1-2014和8库存2-1-2014.我试图在存储过程中显示这些内容,使其看起来像一个日历,显示一个月中的所有日期以及单元格中可用的库存.展示这个的最佳方式是什么?
例如:
Name | 1-1-2014 | 2-1-2014 | 3-1-2014 | 4-1-2014
Item1 | 6 | 8 | | 6
Item2 | | 2 | 1 |
Run Code Online (Sandbox Code Playgroud)
原始表 - 名称
ID | Name
1 | Item1
2 | Item2
Run Code Online (Sandbox Code Playgroud)
原始表 - Stockdates
ID | NameID | Stock | Date
1 | 1 | 8 | 2-1-2014
2 | 2 | 2 | 4-1-2014
Run Code Online (Sandbox Code Playgroud) 为什么有人想将列转换为行(即旋转)?它解决了哪个问题?
我找到了一些链接,但没有得到满意的答案.
http://codeghar.wordpress.com/2007/11/03/pivot-tables/
http://msdn.microsoft.com/en-us/library/ms177410%28SQL.105%29.aspx
我有列的表格如下:
Sr.no Subject No of class attended
-------------------------------------
1 English 3
2 Maths 4
3 SocialScience 5
Run Code Online (Sandbox Code Playgroud)
我希望这种格式的表格
English Maths SocialScience
---------------------------------
3 4 5
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Select case when subject ='Maths' then COUNT(No_of_Candidates) else null end as Maths
Run Code Online (Sandbox Code Playgroud)
但有了这个,我得到这样的数据:
English Maths SocialScience
---------------------------------
3
4
5
Run Code Online (Sandbox Code Playgroud)
请帮帮我怎么解决这个问题..
我已经浏览了Stackoverflow上的很多SQL Pivot示例,在联机丛书和谷歌中,我仍然无法弄清楚如何执行(我会称之为)简单的数据透视操作.
样本数据:
Name Class Score
======= ========== ======
Nick Chinese 80
Nick English 70
Nick Biology 85
Nick Maths 85
Kent Chinese 80
Kent Maths 90
Kent English 70
Kent Biology 85
Run Code Online (Sandbox Code Playgroud)
Name Chinese English Biology Maths
======= ========== ======== ======= ======
Nick 80 70 85 85
Kent 80 70 85 90
Run Code Online (Sandbox Code Playgroud)
注意:
在我脑海中,我想象的语法是:
Run Code Online (Sandbox Code Playgroud)SELECT Score FROM Scores GROUP BY Name PIVOT BY Class
Name Chinese English Biology Maths
======= ========== ======== …Run Code Online (Sandbox Code Playgroud) 我有一个表'propertyvalues'如下:
ID FileID Property Value
1 x Name 1.pdf
2 x Size 12567
3 x Type application/pdf
4 y Name 2.pdf
5 y Size 23576
6 y Type application/pdf
......
and so on
如何在上面的表上编写SQL查询以获取如下所示的结果
FileID Name Size Type
x 1.pdf 12567 application/pdf
y 2.pdf 23576 application/pdf
我确定这是一个简单的技术,虽然我到目前为止找不到答案!
我有
TIMESTAMP | POINTNAME | VALUE
2012-10-10 16:00:00 AHU01 20
2012-10-10 16:00:00 AHU02 25
2012-10-10 16:00:15 AHU01 26
2012-10-10 16:00:15 AHU02 35
Run Code Online (Sandbox Code Playgroud)
等......(大约800个POINTNAMES)
有很多点名我不想在每个枢轴'FOR'的'IN'子句中列出(如下面给出的语法)定义,但是想使用子查询.
所以我想要的是将所有POINTNAME值作为具有A TIMESTAMP和VALUE列的列,因此我将获得一个TIMESTAMP值和每个POINTNAME的多个列,每个POINTNAME PER TIMESTAMP只有一个值,所以我不需要聚合什么,所以只要选择最大值?
就像是:
SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
Run Code Online (Sandbox Code Playgroud)
会产生 -
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
Run Code Online (Sandbox Code Playgroud)
我意识到这可能不是这么简单,但希望你得到我想要实现的目标?
PIVOT语法:
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last …Run Code Online (Sandbox Code Playgroud)