标签: pivot

数据透视表和连接列

我有一个以下格式的数据库:

 ID    TYPE   SUBTYPE    COUNT   MONTH
 1      A      Z          1       7/1/2008
 1      A      Z          3       7/1/2008
 2      B      C          2       7/2/2008
 1      A      Z          3       7/2/2008
Run Code Online (Sandbox Code Playgroud)

我可以使用SQL将其转换为:

ID    A_Z   B_C   MONTH
1     4     0     7/1/2008
2     0     2     7/2/2008
1     0     3     7/2/2008
Run Code Online (Sandbox Code Playgroud)

所以,在TYPE,SUBTYPE连接成新的列和COUNT总结的地方IDMONTH比赛.

任何提示将不胜感激.这可能在SQL中,还是我应该手动编程?

该数据库是SQL Server 2005.

假设有数百TYPESSUBTYPES因此与"A"和"Z"不应该被硬编码,但动态生成的.

sql database sql-server pivot

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

Oracle SQL数据透视查询

我在表格中有数据如下所示:

MONTH VALUE

1     100
2     200
3     300
4     400
5     500
6     600
Run Code Online (Sandbox Code Playgroud)

我想编写一个SQL查询,以便得到如下结果:

MONTH_JAN MONTH_FEB MONTH_MAR MONTH_APR MONTH_MAY MONTH_JUN
100       200       300       400       500       600
Run Code Online (Sandbox Code Playgroud)

sql oracle pivot

14
推荐指数
2
解决办法
3万
查看次数

请解释一下PIVOT的部分内容

我看过很多博文.我已经阅读了文档.我通常相当擅长拾取新东西,但即使我继续阅读,但我只是不理解SQL Server(2008)中的PIVOT部分.

有人可以把它给我,好又慢.(即傻瓜的枢轴)

如果需要一个例子,那么我们可以使用这个问题中的一个.

以下是我尝试转动该示例的方法:

SELECT OtherID, Val1, Val2, Val3, Val4, Val5
FROM 
    (SELECT OtherID, Val
    FROM @randomTable) p
PIVOT
(
    max(val)
    FOR Val IN (Val1, Val2, Val3, Val4, Val5)
) AS PivotTable;
Run Code Online (Sandbox Code Playgroud)

上面的查询给出了空值而不是Val1,Val2 ...列中的值.

但要明确的是,我不是在寻找一个固定的查询.我需要了解 PIVOT,因为我正在寻找比这个例子更复杂的东西.

具体来说,聚合的交易是什么?我只想获取与给定ID匹配的所有字符串值并将它们放在同一行中.我不想集合任何东西.(再次,请看我的例子中的这个问题.)

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

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

从列表中选择SQL PIVOT(在选择中)

是否可以从表中执行PIVOT并选择列表,而不是使用单个值?

像这样(语法错误不正确):

SELECT *
FROM (
    SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
    MAX(ResultID) FOR MilestoneID IN  (SELECT id FROM m) 
) AS pvt
Run Code Online (Sandbox Code Playgroud)

这个编译,但不适合我:

SELECT *
FROM (
    SELECT RepID, MilestoneID, ResultID FROM RM
) AS src
PIVOT (
    MAX(ResultID) FOR MilestoneID IN  ([1], [2], [3], [4]) 
) AS pvt
Run Code Online (Sandbox Code Playgroud)

PS:我不想使用动态SQL,有没有办法在不使用动态SQL的情况下执行此操作?

sql t-sql sql-server pivot

14
推荐指数
2
解决办法
3万
查看次数

以关系表的形式检索MySQL EAV结果的最佳性能是什么

我想提取从EAV(实体属性值)的表,或更具体实体的元数据表的结果(认为像WordPress wp_postswp_postmeta),为"很好的格式化的关系表",以做一些排序和/或过滤.

我已经找到了一些如何在查询中格式化结果的示例(而不是编写2个查询并在代码中加入结果),但我想知道"最有效"的方法,特别是对于更大的结果集.

当我说"效率最高"时,我的意思是出现以下情况:

获取姓氏为XYZ的所有实体

返回按生日排序的实体列表


转过来:

** ENTITY **
-----------------------
ID  | NAME | whatever
-----------------------
 1  | bob  | etc
 2  | jane | etc
 3  | tom  | etc

** META **
------------------------------------
ID | EntityID | KEY         | VALUE
------------------------------------
 1 |   1      | first name  | Bob
 2 |   1      | last name   | Bobson
 3 |   1      | birthday    | 1983-10-10
 . |   2      | first name  | Jane …

mysql performance database-design pivot entity-attribute-value

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

是否可以使用SQL Server使用相同的枢轴列具有多个枢轴

我正面临着以下挑战.我需要在同一列上旋转两次表数据.这是数据的屏幕截图.

每件商品的购买和销售价值列表

我希望每个商品ID都有一行,其中包含每年的购买价值和销售价值.我尝试通过两次选择"年份"列进行此操作,将其格式化一点,以便每个销售年份都以"S"为前缀,每个购买年份以"P"开头,并使用2个枢轴围绕2年列旋转.这是SQL查询(在SQL Server 2008中使用):

SELECT [Item ID], 
        [P2000],[P2001],[P2002],[P2003],
        [S2000],[S2001],[S2002],[S2003]
FROM 
(

SELECT [Item ID]
      ,'P' + [Year] AS YearOfPurchase
      ,'S' + [Year] AS YearOfSelling

  ,[Purchasing value]
  ,[Selling value]
  FROM [ItemPrices]
) AS ALIAS

PIVOT 
(
MIN ([Purchasing value]) FOR [YearOfPurchase] in ([P2000],[P2001],[P2002],[P2003])
)
AS pvt

PIVOT 
(
MIN ([Selling value]) FOR [YearOfSelling] in ([S2000],[S2001],[S2002],[S2003])
)
AS pvt2
Run Code Online (Sandbox Code Playgroud)

结果并不完全是我所希望的(见下图):

实际情况:行太多

如您所见,每个商品ID仍有多行.有没有办法将每行的行数减少到一个?所以它看起来有点像下面的Excel截图?

所需情况:每个商品ID一行

sql sql-server pivot unpivot

14
推荐指数
3
解决办法
5万
查看次数

oracle sql中的动态数据透视

... pivot((X)中B的总和(A))

现在B的数据类型为varchar2,X是由逗号分隔的varchar2值的字符串.
X的值是来自同一表的列(比如CL)的不同值.这种方式使用数据透视查询.

但问题是,只要列CL中有新值,我必须手动将其添加到字符串X.

我尝试用CL中的select distinct值替换X. 但查询未运行.
我觉得的原因是因为替换X我们需要用逗号分隔的值.
然后我创建了一个函数来返回精确的输出以匹配字符串X.但查询仍然没有运行.
显示的错误消息类似于"丢失righr parantheses","文件结束通信通道"等等.
我尝试使用pivot xml而不仅仅是pivot,查询运行但是提供了像oraxxx等这些根本没有值的值.

也许我没有正确使用它.
你能告诉我一些用动态值创建枢轴的方法吗?

sql oracle pivot

14
推荐指数
3
解决办法
8万
查看次数

SQL Server 2008垂直数据为水平

我为提交关于这个主题的另一个问题而道歉,但我已经阅读了很多这方面的答案,我似乎无法让它为我工作.

我有三个表需要加入并提取信息.其中一个表只有3列并垂直存储数据.我想将这些数据转换为横向格式.

如果我只是加入并拉动,数据将如下所示:

SELECT 
   a.app_id, 
   b.field_id, 
   c.field_name,
   b.field_value 
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id  --(table3 is a lookup table for field names)
Run Code Online (Sandbox Code Playgroud)

结果:

app_id  |  field_id  |   field_name   |  field_value
-----------------------------------------------------
 1234   |    101     |    First Name  |     Joe  
 1234   |    102     |     Last Name  |     Smith
 1234   |    105     |       DOB      |   10/15/72
 1234   |    107     |  Mailing Addr  |   PO BOX 1234
 1234   |    110     |      Zip …
Run Code Online (Sandbox Code Playgroud)

sql-server transpose pivot

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

Pandas中的多索引旋转

考虑以下数据帧:

         item_id  hour    when        date      quantity
110   0YrKNYeEoa     1  before  2015-01-26        247286
111   0UMNiXI7op     1  before  2015-01-26        602001
112   0QBtIMN3AH     1  before  2015-01-26        981630
113   0GuKXLiWyV     1  after   2015-01-26       2203913
114   0SoFbjvXTs     1  after   2015-01-26        660183
115   0UkT257SXj     1  before  2015-01-26        689332
116   0RPjXnkiGx     1  after   2015-01-26        283090
117   0FhJ9RGsLT     1  before  2015-01-26       2024256
118   0FhGJ4MFlg     1  before  2015-01-26         74524
119   0FQhHZRXhB     1  before  2015-01-26             0
120   0FsSdJQlTB     1  before  2015-01-26             0
121   0FrrAzTFHE     1  before  2015-01-26             0
122   0FfkgBdMHi …
Run Code Online (Sandbox Code Playgroud)

python pivot pandas

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

如何在PostgreSQL中进行透视

我是PostgreSQL的新手.

假设我有一张桌子

colorname   Hexa    rgb rgbvalue
Violet  #8B00FF r   139
Violet  #8B00FF g   0
Violet  #8B00FF b   255
Indigo  #4B0082 r   75
Indigo  #4B0082 g   0
Indigo  #4B0082 b   130
Blue    #0000FF r   0
Blue    #0000FF g   0
Blue    #0000FF b   255
Run Code Online (Sandbox Code Playgroud)

如果我在SQL Server中做一个Pivot

SELECT colorname,hexa,[r], [g], [b]
FROM
(SELECT colorname,hexa,rgb,rgbvalue
    FROM tblPivot) AS TableToBePivoted
PIVOT
(
sum(rgbvalue)
FOR rgb IN ([r], [g], [b])
) AS PivotedTable;
Run Code Online (Sandbox Code Playgroud)

我把输出作为

colorname   hexa    r   g   b
Blue    #0000FF 0   0   255
Indigo  #4B0082 …
Run Code Online (Sandbox Code Playgroud)

postgresql pivot postgresql-9.1

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