标签: dynamic-pivot

动态创建列sql

我有一张顾客表

Customer ID        Name         
   1               John        
   2               Lewis        
   3               Mary         
Run Code Online (Sandbox Code Playgroud)

我有另一张表CustomerRewards

 TypeID           Description
   1                Bronze
   2                Silver
   3                Gold
   4               Platinum
   5               AnotherOne
Run Code Online (Sandbox Code Playgroud)

决赛桌

 RewardID          TypeID          CustomerID
    1                1                 1
    2                1                 1
    3                2                 1
    4                2                 2
Run Code Online (Sandbox Code Playgroud)

customerTypes表是动态的,可以添加和删除许多这些类型.基本上我想要的是动态生成的列和每个列中的计数,类似于

CustomerName        Bronze        Silver     Gold      Platinum     AnotherOne    total
   John               2             1         0           0             0           3
   Lewis              0             1         0           0             0           1
 Grand TOTAL          2             2         0           0             0           4
Run Code Online (Sandbox Code Playgroud)

问题就像我说的那样,类型是动态的,客户是动态的,所以我需要根据系统中的类型使列成为动态的

我已经在DataGridView中标记了c#,因为我需要它

提前致谢

sql t-sql sql-server pivot dynamic-pivot

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

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万
查看次数

如何使用日期作为列动态旋转

我有一个包含产品ID和名称的表格,另一个表格包含这些产品在特定日期的库存.比如Item16库存1-1-20148库存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)

sql sql-server pivot dynamic-pivot

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

如何在 Presto 中旋转表格?

设一个名为 data 的表,其中包含 time、sensor、value 列:

在此输入图像描述

我想在 Athena (Presto) 上旋转该表以获得一个像这样的新表:

在此输入图像描述

为此,可以运行以下查询:

SELECT time, 
sensor_value['temperature'] as "temperature", 
sensor_value['pressure'] as "pressure" 
FROM (
    SELECT time, mapp_agg(sensor, value) sensor_value
    FROM data
    GROUP BY time
)
Run Code Online (Sandbox Code Playgroud)

这效果很好。但是,我必须指定sensor_value 的键。因此,我需要知道传感器的唯一值,然后相应地手动编写查询。问题是我没有这样的信息。您知道解决此问题的通用(且有效)解决方案吗?我真的很感激任何帮助。谢谢。

sql pivot group-by dynamic-pivot presto

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

SQL Dynamic Pivot - 如何对列进行排序

我正在对包含以下内容的表进行动态数据透视查询:

  • OID - OrderID
  • 尺寸 - 产品尺寸
  • BucketNum - 大小的顺序
  • 数量 - 订购了多少

size列包含不同的大小,具体取决于OID.

所以,使用这里找到的代码,我把它放在一起:

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)

SELECT  @listCol = STUFF(( SELECT distinct  '], [' + [size]
                           FROM     #t
                         FOR
                           XML PATH('')
                         ), 1, 2, '') + ']'


SET @query = 'SELECT * FROM
      (SELECT OID,  [size], [quantity]
            FROM #t 
            ) src
PIVOT (SUM(quantity) FOR Size
IN (' + @listCol + ')) AS pvt'


EXECUTE ( @query )
Run Code Online (Sandbox Code Playgroud)

除了列标题(大小标签)不在基于bucketnum列的顺序之外,这种方法很有效.这些是基于尺寸的顺序.

我在枢轴后尝试了可选的Order By,但这不起作用.

如何控制列的显示顺序?

谢谢

pivot sql-server-2005 dynamic-pivot

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

动态数据透视中的行和列总数

在SQL Server 2008中,我有一个包含3列的表(tblStock):

  • PartCode(NVARCHAR(50))
  • StockQty(INT)
  • 位置(NVARCHAR(50))

下面的一些示例数据:

    PartCode    StockQty    Location
   .........   .........    .........
    A              10        WHs-A
    B              22        WHs-A
    A               1        WHs-B
    C              20        WHs-A
    D              39        WHs-F
    E               3        WHs-D
    F               7        WHs-A
    A               9        WHs-C
    D               2        WHs-A
    F              54        WHs-E
Run Code Online (Sandbox Code Playgroud)

如何创建程序以获得如下结果?

PartCode    WHs-A   WHs-B   WHs-C   WHs-D   WHs-E   WHs-F   Total
........    .....   .....   .....  ......   .....   .....   .....
A            10       1       9       0       0       0      20
B            22       0       0       0       0       0      22
C            20       0       0 …
Run Code Online (Sandbox Code Playgroud)

pivot cube dynamic-pivot sql-server-2008

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

在SQL Server 2005中透视表以多次包含相同的列

我需要透过以下名为tblGameRoleName的表 -


Game        Role    Name
VolleyBall  Coach   Sujatha
VolleyBall  Player  Rajendran
VolleyBall  Player  Juno
VolleyBall  Player  Indira
VolleyBall  Player  Ganesh
VolleyBall  Player  Vasanth
Tennis      Coach   Rajeshkumar
Tennis      Player  Vivek
Tennis      Player  Rubala

到下面有多次'Player'列的表 -


Game        Coach       Player1     Player2 Player3 Player4 Player5
VolleyBall  Sujatha     Rajendran   Juno    Indira  Ganesh  Vasanth
Tennis      Rajeshkumar Vivek       Rubala  NULL    NULL    NULL

问题是"玩家"的数量可以针对不同的"游戏"增加,结果表应该显示所有游戏的所有玩家.例如 - 如果我将以下'板球'团队添加到此表中 -


Cricket Coach   Gary
Cricket Player  Viru
Cricket Player  Gauti
Cricket Player  Sachin
Cricket Player  Mahi
Cricket Player  Yuvi
Cricket Player  Suresh …

sql-server-2005 dynamic-pivot

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

MySQL动态透视

我有一张这样的产品零件表:

部分

part_id      part_type      product_id
--------------------------------------
1            A              1
2            B              1
3            A              2
4            B              2
5            A              3
6            B              3
Run Code Online (Sandbox Code Playgroud)

我想要一个返回如下表格的查询:

product_id      part_A_id      part_B_id
----------------------------------------
1               1              2
2               3              4
3               5              6
Run Code Online (Sandbox Code Playgroud)

在实际实施中,将有数百万个产品部件

mysql sql pivot dynamic-pivot

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

MySql 枢轴未知数量的列标题

我有一个 MySql 查询,我想动态地旋转该查询,将公司名称作为列标题,将公司财务字段作为行标题。

目前我有这个:

SELECT Company, TotalRevenue, Overhead, TotalJobCosts, GrossProfit 
FROM comp_financials
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

公司 总收入 高架 总工作成本 毛利
芝加哥最好的建筑 2098001 363750 1424420 673581
琼斯建筑公司 4509458 1067008 2876568 1632890

我希望得到这样的东西:

芝加哥最好的建筑 琼斯建筑公司
总收入 2098001 4509458
高架 363750 1067008
总工作成本 1424420 2876568
毛利 673581 1632890

拥有未知数量的公司及其价值(但通常少于 20 家)。

到目前为止,我已经将公司名称动态显示为列标题,但无法了解如何显示行值(行标题不是必需的)。

SET @@group_concat_max_len = 32000;
SET @sql = NULL;
SELECT  GROUP_CONCAT(DISTINCT
        CONCAT('MAX(CASE WHEN Company = ''',
               Company,
               ''' THEN Company ELSE NULL END) AS ',
               CONCAT('`', Company, '`')
               )) INTO @sql
FROM comp_financials;

SET …
Run Code Online (Sandbox Code Playgroud)

mysql sql pivot dynamic-pivot

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