标签: pivot

SQL行到列

我有一个表,并希望将其行转置为列,类似于数据透视表但没有汇总.

例如,我有以下表格:

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

基本上,您可以保证在此方案中每个相应问题都会有响应.

sql-server pivot crosstab

1
推荐指数
1
解决办法
1万
查看次数

需要转动帮助

请帮我解决一下这个.我完全陷入困境.我有编码器块或什么的.

我有下表

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

1
推荐指数
1
解决办法
175
查看次数

MySQL - 同一列的不同WHERE子句

我有一种情况需要根据内容创建列.

例如,这里是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陈述,但更清楚的解释将非常有用.

mysql sql pivot case

1
推荐指数
1
解决办法
393
查看次数

我组织严密的表格的另一个问题

我有一个像这样的表设置:

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)

mysql sql pivot count

1
推荐指数
1
解决办法
52
查看次数

获取多列的总和并计算每行的比率

下面是我的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)

mysql sql pivot sum

1
推荐指数
1
解决办法
5213
查看次数

无法使用我的查询透视表?

我有一张看起来像这样的桌子 -

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)

sql sql-server pivot sql-server-2005

1
推荐指数
1
解决办法
185
查看次数

SQL根据主题计算出现次数

我发现很难说出我想要实现的目标.我有一个看起来像这样的表:

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构建查询.

sql oracle pivot jpql

1
推荐指数
1
解决办法
232
查看次数

PivotTable.js - pivot()始终返回count()值

我正在使用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(),我总是得到记录计数的总和,而不是字段值的总和.你能告诉我如何解决这个问题吗?

pivot pivottable.js

1
推荐指数
1
解决办法
3925
查看次数

熊猫:转向真/假,掉落专栏

我正在尝试创建我认为简单的数据透视表但我遇到严重问题.有两件事我无法做到:

  1. 最后摆脱"伙伴"专栏.
  2. 如果每个公司都有该合作伙伴,请将值设置为True或False.

建立:

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.任何帮助,将不胜感激.

python pivot pandas

1
推荐指数
1
解决办法
1643
查看次数

如何使用两个值(列)进行PIVOT查询?

我正在尝试创建两列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)

sql t-sql sql-server pivot sql-server-2008

1
推荐指数
1
解决办法
58
查看次数