我有一个表,并希望将其行转置为列,类似于数据透视表但没有汇总.
例如,我有以下表格:
Question
--QuestionID
--QuestionText
Response
--ResponseID
--ResponseText
--QuestionID
Run Code Online (Sandbox Code Playgroud)
基本上我希望能够创建一个动态表,如:
Question 1 Text | Question 2 Text | Question 3 Text
---------------------------------------------------
Response 1.1 Text | Response Text 1.2 | Response 1.3
Response 2.1 Text | Response Text 2.2 | Response 2.3
Response 3.1 Text | Response Text 3.2 | Response 3.3
Response 4.1 Text | Response Text 4.2 | Response 4.3
Run Code Online (Sandbox Code Playgroud)
主要要求是我在设计时不知道问题文本是什么.
请有人帮忙 - 我把头发拉出来:oS
基本上,您可以保证在此方案中每个相应问题都会有响应.
请帮我解决一下这个.我完全陷入困境.我有编码器块或什么的.
我有下表
ID Name Cost Included
---- ---------- ------- ----------
1 Package1 10.00 Yes
2 Package2 20.00 No
3 Package3 20.00 Yes
Run Code Online (Sandbox Code Playgroud)
我想交叉显示这些信息,要显示如下例子,表格中会有更多列.
Type Package1 Package2 Package3
----- ------------ ----------- ----------
Name Package1 Package2 Package3
Cost 10.00 20.00 30.00
Included Yes No Yes
Run Code Online (Sandbox Code Playgroud) sql sql-server pivot sql-server-2008 pivot-without-aggregate
我有一种情况需要根据内容创建列.
例如,这里是SQLFiddle - http://sqlfiddle.com/#!2/0ec7a/1.
我需要得到这样的结果:
--------------------------
| CITY | MALES | FEMALES |
--------------------------
| NY | 5 | 2 |
--------------------------
| DC | 2 | 1 |
--------------------------
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我正在查看MySQL手册中的CASE WHEN陈述和IF陈述,但更清楚的解释将非常有用.
我有一个像这样的表设置:
fruit1 | fruit2 | fruit3 | fruit4 | number1 | number2 | number3 | number4
--------------------------------------------------------------------------
apple | orange | banana | berry | 5 | 2 | 1 | 4
orange | banana | apple | berry | 3 | 2 | 5 | 2
berry | banana | orange | apple | 1 | 2 | 5 | 2
Run Code Online (Sandbox Code Playgroud)
我需要一个MySQL查询来计算每个水果每个数字的次数.所以,它最终会是这样的:
Fruit | 5's | 4's | 3's | 2's | 1's
-----------------------------------
Apple | 2 | 0 …Run Code Online (Sandbox Code Playgroud) 下面是我的brand_of_items表的架构.为简单起见,此处显示了两列:id(primary和AI),symbol(varchar 50,unique)
Table - brand_of_items
id symbol
0 a
1 b
2 c
.. ..
10 j
Run Code Online (Sandbox Code Playgroud)
下面是我的items_of_brand的架构.
Table - mainIndexQuantity
id brand_of_items_id vol item_type salefinalizeddate
0 1 5 0 2005-5-11
1 1 6 0 2004-5-11
2 1 7 0 2011-5-11
3 1 8 0 2011-5-12
4 1 9 0 2011-5-12
5 1 10 0 2011-5-11
6 1 5 1 2012-5-11
7 1 6 1 2012-5-11
8 1 7 1 2011-5-11
9 1 8 1 2010-5-12
10 1 9 1 …Run Code Online (Sandbox Code Playgroud) 我有一张看起来像这样的桌子 -
Id AttributeName AttributeValue
A1 Atr1 A1V1
A1 Atr2 A1V2
A1 Atr3 A1V3
A2 Atr1 A2V1
A2 Atr2 A2V2
A2 Atr3 A3V3
Run Code Online (Sandbox Code Playgroud)
该表中的每个ID具有完全相同的属性,即ATR1,ATR2,ATR3.这些属性的值是唯一的.
我想透过这个表并得到以下输出 -
Id Atr1 Atr2 Atr3
A1 A1V1 A1V2 A1V3
A2 A2V1 A2V2 A2V3
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢 ?
我尝试了一个查询,它失败并出现错误 - 消息156,级别15,状态1,行21错误的语法在关键字'FOR'附近.
-- Create a temporary table
DECLARE @MyTable TABLE
(Id varchar(25),
AttributeName varchar(30),
AttributeValue varchar(30))
-- Load Sample Data
INSERT INTO @MyTable VALUES ('A1', 'Atr1', 'A1V1')
INSERT INTO @MyTable VALUES ('A1', 'Atr2', 'A1V2')
INSERT INTO @MyTable VALUES ('A1', …Run Code Online (Sandbox Code Playgroud) 我发现很难说出我想要实现的目标.我有一个看起来像这样的表:
user char
---------
a | x
a | y
a | z
b | x
b | x
b | y
c | y
c | y
c | z
Run Code Online (Sandbox Code Playgroud)
如何编写一个可以返回以下结果的查询?
user x y z
-------
a |1|1|1|
b |2|1|0|
c |0|2|1|
Run Code Online (Sandbox Code Playgroud)
数字表示原始表中字符的出现次数
编辑:字符值未知,因此解决方案不能限制在这些值.很抱歉没有提及它.我正在使用Oracle DB,但计划使用JPQL构建查询.
我正在使用PivotTable.js,我正在尝试使用pivot()创建一个表,如下所示:
<script type="text/javascript">
$(function(){
var tpl = $.pivotUtilities.aggregatorTemplates;
$.getJSON("9_Response.json", function(mps) {
$("#output").pivot(mps, {
derivedAttributes: {
"Market": function(mp) {
return mp["market"];
},
"Year": function(mp) {
return mp["stYear"];
}
},
aggregators: {
"Sum1": function() { return tpl.sum()(["totSale"])}
},
rows: ["Market"],
cols: ["Year"],
aggregatorName: "Sum1",
rendererName: "Table"
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我使用PivotUI()它工作正常,但我想只创建一个静态表,没有UI(没有拖放属性,渲染器和聚合器选择器).我只需要桌子.使用pivot(),我总是得到记录计数的总和,而不是字段值的总和.你能告诉我如何解决这个问题吗?
我正在尝试创建我认为简单的数据透视表但我遇到严重问题.有两件事我无法做到:
建立:
df = pd.DataFrame({'company':['a','b','c','b'], 'partner':['x','x','y','y'], 'str':['just','some','random','words']})
Run Code Online (Sandbox Code Playgroud)
期望的输出:
company x y
a True False
b True True
c False True
Run Code Online (Sandbox Code Playgroud)
我开始时:
df = df.pivot(values = 'partner', columns = 'partner', index = 'company').reset_index()
Run Code Online (Sandbox Code Playgroud)
让我接近,但当我试图摆脱"伙伴"专栏时,我甚至无法引用它,而且它不是"索引".
对于第二个问题,我可以使用:
df.fillna(False, inplace = True)
df.loc[~(df['x'] == False), 'x'] = True
df.loc[~(df['y'] == False), 'y'] = True
Run Code Online (Sandbox Code Playgroud)
但这似乎令人难以置信的hacky.任何帮助,将不胜感激.
我正在尝试创建两列PIVOT查询.结构如下:
DECLARE @Tmp TABLE( Id1 int, Id2 int, Name nvarchar(20), Val1 int, Val2 nvarchar(10))
Run Code Online (Sandbox Code Playgroud)
使用以下虚拟数据:
INSERT INTO @Tmp VALUES(1,10,'A',2,'str1'), (1,11,'B',2,'str2'),
(2,10,'A',3,'str3'),(3,11,'B',4, null),(4,11,'B',5,'str4'),(4,10,'A',5,null)
Run Code Online (Sandbox Code Playgroud)
我想要实现的是具有2个不同值(Val1, Val2)的PIVOT查询.我确实尝试了以下查询,但是,由于Val2是a ,因此无法对结果中的值进行分组nvarchar
SELECT * FROM
(SELECT Id1, Name, Val1, Val2, Name +'_Val2' AS ColVal2 FROM @Tmp) AS tb
PIVOT(MIN(Val1) FOR Name IN([A],[B])) pv
PIVOT(MIN(Val2) FOR ColVal2 IN([A_Val2],[B_Val2])) pv2
-- GROUP BY could go here ...
Run Code Online (Sandbox Code Playgroud)
重要的是要查询将是动态的,因为值Name不是固定的,即Id1可以与n相关Id2
所需的输出应如下所示:
Id1 A B A_Val2 B_Val2
1 2 2 str1 str2 …Run Code Online (Sandbox Code Playgroud)