标签: pivot

如何使用SQL将垂直数据转换为水平数据?

我有一个表"项目",其中包含许多相关项目,如下所示:

ID   Rel_ID  Name  RelRank
---  ------  ----  -------
1    1       foo   1
2    1       bar   2
3    1       zam   3
4    2       foo2  1
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取查询,因此具有相同Rel_ID的项目将出现在同一行中,如下所示:

Rel_ID  Name1  Name2  Name3
------  -----  -----  -----
1       foo    bar    zam
2       foo2
Run Code Online (Sandbox Code Playgroud)

我尝试过多次选择表格:

SELECT k.Rel_ID, k.name 'Name1', k2.name 'Name2'
FROM item k, item k2
WHERE k.Rel_ID = k2.Rel_ID
Run Code Online (Sandbox Code Playgroud)

但这失败了.当然有一个转换或查询可以大大简化过程,我只是错过它,因为我之前没有以这种方式使用SQL.我错过了什么?

[编辑:添加了RelRank列,确实出现在我的数据中]

mysql sql pivot

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

SQL Server - 动态PIVOT表 - SQL注入

很抱歉这个问题很长,但是这里包含了我用来测试场景的所有SQL,希望能够清楚地说明我在做什么.

我在SQL Server 2005中构建了一些动态SQL来生成PIVOT表.

下面是执行此操作的代码.使用各种选择显示原始数据使用GROUP BY的值和PIVOT中的值,我想要它们.

BEGIN TRAN
--Create the table
CREATE TABLE #PivotTest
(
    ColumnA nvarchar(500),
    ColumnB nvarchar(500),
    ColumnC int
)

--Populate the data
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'X', 1)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Y', 2)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Z', 3)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'X', 4)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('A', 'Y', 5)
INSERT INTO #PivotTest (ColumnA, ColumnB, ColumnC) VALUES('B', 'Z', 6)
INSERT …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-injection sql-server-2005 dynamic-pivot

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

T-SQL动态数据透视

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

ItemID | ColumnName | Value
1      | name       | Peter
1      | phone      | 12345678
1      | email      | peter@host.com
2      | name       | John
2      | phone      | 87654321
2      | email      | john@host.com
3      | name       | Sarah
3      | phone      | 55667788
3      | email      | sarah@host.com
Run Code Online (Sandbox Code Playgroud)

现在我需要把它变成这个:

ItemID | name  | phone    | email
1      | Peter | 12345678 | peter@host.com
2      | John  | 87654321 | john@host.com
3      | Sarah | 55667788 | sarah@host.com …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server pivot dynamic

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

将Access TRANSFORM/PIVOT查询转换为SQL Server

TRANSFORM Avg(CASE WHEN [temp].[sumUnits] > 0 
                   THEN [temp].[SumAvgRent] / [temp].[sumUnits] 
                   ELSE 0 
              END) AS Expr1
SELECT [temp].[Description]
  FROM [temp] 
GROUP BY [temp].[Description]
PIVOT [temp].[Period];
Run Code Online (Sandbox Code Playgroud)

需要为sql server转换此查询

我已阅读所有其他帖子但无法将其转换为相同的内容

sql t-sql sql-server ms-access pivot

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

如何将mysql表行转换为列

这是我当前的mysql表的样子:

PunchID EmpID   PunchEvent  PunchDateTime
1       0456    clockin     5/14/2013 8:36:26 AM
48      0456    breakout    5/14/2013 12:01:29 PM
53      0456    breakin     5/14/2013 12:28:31 PM
54      0456    clockout    5/14/2013 2:28:33 PM
57      0456    clockin     5/15/2013 7:38:34 AM
58      0456    breakout    5/15/2013 7:38:39 AM
59      0456    breakin     5/15/2013 7:38:41 AM
60      0456    clockout    5/15/2013 7:38:42 AM
Run Code Online (Sandbox Code Playgroud)

现在我想返回一个基于星期几分组的结果集,如下所示:

Day       ClockIn      BreakOut    BreakIn      ClockOut
Tuesday   8:36:26 AM  12:01:29 PM  12:28:31 PM  2:28:33 PM
Wednesday 7:38:34 AM  etc, etc...
Run Code Online (Sandbox Code Playgroud)

这是我目前的查询.但它只返回每天的第一拳.

SELECT DATE_FORMAT(PunchDateTime, '%W') as day, PunchEvent, …
Run Code Online (Sandbox Code Playgroud)

mysql sql pivot

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

Oracle Pivot查询为列提供了围绕列名称的引号.什么?

我正在尝试在Oracle中使用PIVOT,我得到了一个奇怪的结果.它可能只是我需要设置的一个选项,但我对Oracle/SQL的了解可以放在这个评论框中.

这是我的查询示例:

with testdata as
(
    select 'Fred' First_Name, 10 Items from dual
    union
    select 'John' First_Name, 5  Items from dual
    union 
    select 'Jane' First_Name, 12 Items from dual
    union
    select 'Fred' First_Name, 15 Items from dual
)

select * from testdata
pivot (
    sum(Items)
    for First_Name
    in ('Fred','John','Jane')
Run Code Online (Sandbox Code Playgroud)

结果如我所料,除了列名称周围有单引号(来自Toad的图片 - 如果我导出到Excel,引号会被带到Excel):

Toad数据网格

如何摆脱列名称周围的单引号?我尝试在"in"子句中取出它们,我收到一个错误:

in (Fred,John,Jane)
Run Code Online (Sandbox Code Playgroud)

错误信息

我也尝试用双引号替换单引号并得到相同的错误.我不知道这是否是我需要在运行查询或Toad之前设置/取消设置的Oracle选项.

sql oracle pivot

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

在Oracle行的多个列上使用pivot

我在Oracle表(tab1)中有以下示例数据,我正在尝试将行转换为列.我知道如何在一列上使用Oracle pivot.但是可以将它应用于多个列吗?

样本数据:

Type  weight  height  
A     50      10  
A     60      12  
B     40      8  
C     30      15  
Run Code Online (Sandbox Code Playgroud)

我的预期输出:

A-count B-count C-count A-weight B-weight C-weight A-height B-height C-height  
2       1       1       110      40       30       22       8        15  
Run Code Online (Sandbox Code Playgroud)

我可以做什么:

with T AS 
(select type, weight from tab1 )
select * from T
PIVOT (
count(type)
for type in (A, B, C, D,E,F)
)  
Run Code Online (Sandbox Code Playgroud)

以上查询给出了以下结果

A B C  
2 1 1  
Run Code Online (Sandbox Code Playgroud)

我可以count(*)sum(weight)或替换sum(height)高度或重量.我想要做的,但我不能做,是在一个查询中转动所有三个(计数,重量和高度).

可以用枢轴完成吗?

sql oracle pivot oracle11g

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

如何隐藏PivotItem?

我有一个带Pivot控件的页面,在某些情况下我不想显示特定的内容PivotItem.
设置Visibility为折叠似乎根本不会影响它.

有什么建议?

silverlight xaml pivot windows-phone-7

15
推荐指数
3
解决办法
9354
查看次数

带有字符串的SQL Pivot

我在SQL Server中有两个表:Customer和Address

客户表:

CustomerID  FirstName  LastName
----------- ---------- ----------
1           Andrew     Jackson         
2           George     Washington
Run Code Online (Sandbox Code Playgroud)

地址表:

AddressID   CustomerID  AddressType City
----------- ----------- ----------- ----------
1           1           Home        Waxhaw     
2           1           Office      Nashville    
3           2           Home        Philadelphia
Run Code Online (Sandbox Code Playgroud)

这是我需要的输出:

CustomerID  Firstname  HomeCity      OfficeCity
----------- ---------- ----------    ----------
1           Andrew     Waxhaw        Nashville
2           George     Philadelphia  Null
Run Code Online (Sandbox Code Playgroud)

这是我的查询,但没有得到正确的结果:

SELECT CustomerID, Firstname, HOme as HomeCity, Office as OfficeCity FROM 
   (SELECT C.CustomerID, C.FirstName, A.AddressID, A.AddressType, A.City 
    FROM Customer C, Address A 
    WHERE C.CustomerID = …
Run Code Online (Sandbox Code Playgroud)

sql pivot

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

SQL Server根据一列透视多个列

我在sql server 2008R2中有以下源表和目标表.如何在TSQL中执行pivot(s)以从源到达目标.

SourceTbl

empId    empIndex    empState    empStDate    empEndDate
========================================================
10        1           AL          1/1/2012     12/1/2012
10        2           FL          2/1/2012     2/1/2013
15        1           FL          3/20/2012    1/1/2099
Run Code Online (Sandbox Code Playgroud)

DestTbl

empId    empState1  empState1StDate    empState1EndDt    empState2  empState2StDate    empState2EndDt
=========================================================================================================
10        AL         1/1/2012           12/1/2012         FL         2/1/2012           2/1/2013
15        FL         3/20/2012          1/1/2099          NULL       NULL               NULL
Run Code Online (Sandbox Code Playgroud)

希望empIndex以某种方式帮助支点.

t-sql sql-server transpose pivot

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