标签: pivot

从视图或函数中的多个表中提取数据

我需要从 3 个表中提取数据,并以特定方式打印它。

http://sqlfiddle.com/#!15/59481/8

请参阅此问题以了解查询是如何生成的。小提琴中的版本部分工作,但我需要修改查询以产生不同的输出。

我有一个project_report存储数据的表keyword

1. If a keyword has data for a particular day it will store it in `project_report`
2. A keyword might have no data to store for a particular day.
3. A keyword might store multiple rows of data for a particular day (the data is uniq)
4. A keyword might not have data for a particular day, but it might have for a different day.
Run Code Online (Sandbox Code Playgroud)

我相信要解决我的问题,DB 函数将是最好的方法,因为我希望能够指定一个日期并从project_reports …

postgresql performance pivot query-performance

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

查询每月有 group_concat 和 group by 需要帮助

我被困在一个连接表查询上,每月显示涉及 GROUP BY 和 GROUP_CONCAT 的数据。

这是一个简单的客户端表(本文底部的 DDL 和 DML):

id | Name
1  | Sony
2  | Toshiba
3  | Apple
4  | LG
5  | Uco
Run Code Online (Sandbox Code Playgroud)

然后是事件表

id | client_id | date_start
1 | 1 | 2017-01-12 18:44:42
2 | 1 | 2017-01-13 18:44:42
3 | 1 | 2017-01-14 18:44:42
4 | 1 | 2017-02-12 18:44:42
5 | 1 | 2017-03-12 18:44:42
6 | 1 | 2017-07-12 18:44:42
7 | 2 | 2017-02-12 18:44:42
8 | 2 | …
Run Code Online (Sandbox Code Playgroud)

mysql pivot group-by group-concatenation

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

水平显示表格中的数据

我有一个存储传感器数据的表(在 SQLite 中),看起来像这样;

TABLE Timestream:
idTimestream PK autoincrementing integer, 
time int not null, 
value float not null, 
idSensor integer not null FK
Run Code Online (Sandbox Code Playgroud)

一些但并非所有传感器都有匹配时间,但我只会考虑那些有匹配时间的传感器。我想要做的是将表格重新排列为以下格式,基于查询中列出的一组传感器,而不是表格中的全部:

Time Sensor1 Sensor2 etc.
Run Code Online (Sandbox Code Playgroud)

我正在考虑创建一个临时表,然后插入时间和第一列,然后对时间进行连接以进行后续查询,最后选择整个批次。但这听起来效率不高,我想知道是否有更好的方法?

sqlite pivot

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

SQL Server 中带有 PIVOT 的索引视图

我的问题的简化版本如下:

我有三个表记录、输入和输出。

记录

Id DTS  
2015-01-01 00:00
...

输入

Id RecordId InputId Value
1   1   100  
... ...
1   1   105  

输出

Id RecordId OutputId Value
1   1   200  
... ...
1   1   10  

这样做是为了避免由于表中列数的限制而限制输入或输出的总数。我正在寻找针对类似于以下内容的查询的最佳(最快)方法:

DTS   Input1 ... InputN Output1 ... OutputM
2015-01-01 00:00 100   ... 105   200   ... 10  
...

我最初的计划是基于旋转必要的输入和输出并适当地加入它们来创建一个视图。数据只需要只读并且本质上是静态的,所以我想防止它为每个查询扩展。我读到我可以向视图添加索引以“具体化”它,但是如果视图使用 PIVOT,则无法做到这一点。

有没有人对我如何做到这一点有任何建议?或者,如果我以错误的方式处理这个问题,我很乐意接受建议。

performance sql-server pivot view

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

MySQL - 如何按天和小时对数据进行分组

我在获取此示例格式的查询时遇到了一些问题。我的想法是选择当天的小时数并按天分组还是选择所有 7 天并按小时数分组?

这是格式:

在此处输入图片说明

mysql pivot

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

如何旋转多列

我有以下数据,

Year        DRC             DISP        Id
0           140.21          0.00        5808
1           112.37          1.00        5808
0           140.21          0.00        5824
1           112.37          0.00        5824
Run Code Online (Sandbox Code Playgroud)

我想像这样旋转它,

Id          DRC Year 0      DISP Year 0     DRC Year 1      DISP Year 1
5808        140.21          0.00            112.37          1.00
5824        140.21          0.00            112.37          0.00
Run Code Online (Sandbox Code Playgroud)

我试过这个,

SELECT *
FROM
(
    SELECT Year, DRC, DISP, ID From OriginalDataTable
) AS SourceTable

PIVOT
(
    max(DRC)
    for Year IN ([0], [1])
) AS PivotTable;
Run Code Online (Sandbox Code Playgroud)

它以 DRC 为中心,但也不以 DISP 为中心。结果是这样的(0,1是DRC值)。我明白为什么会这样,但我如何以 DISP 为中心?

DISP        Id …
Run Code Online (Sandbox Code Playgroud)

pivot

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

具有 2 列以上的枢轴(使用 CROSSTAB?)

我有一个deflator定义为的表:

               Table "deflator"
    Column   |       Type        | Modifiers
-------------+-------------------+-----------
country_code | smallint          | not null
country_name | character varying | not null
year         | smallint          | not null
deflator     | numeric           |
source       | character varying |
Run Code Online (Sandbox Code Playgroud)

此表的示例输出如下所示:

country_code | country_name  | year | deflator | source
-------------+---------------+------+----------+----------
           1 | country_1     | 2016 |       12 | source_1
           1 | country_1     | 2015 |       11 | source_2
           1 | country_1     | 2014 |       10 | source_2
           2 | country_2 …
Run Code Online (Sandbox Code Playgroud)

postgresql pivot postgresql-9.4

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

在 sql server 中使用汇总进行透视

是否可以使用游标创建动态表,然后使用这些列聚合 SQL Server 2008 中的数据?

以下表为例。

CREATE TABLE Billing (
    BillingId BIGINT IDENTITY,
    SubscriptionId BIGINT,
        ExternalServiceName VARCHAR(50),
        BillYear INT NOT NULL,
    BillMonth INT NOT NULL
);

INSERT INTO Billing (BillingId, SubscriptionId, ExternalServiceName,
                     BillYear, BillMonth)
VALUES (1, 1, 'Dogs', 2018, 4),
       (2, 2, 'Cats', 2018, 4),
       (3, 1, 'Dogs', 2018, 5),
       (4, 2, 'Cats', 2018, 5);

CREATE TABLE BillingData (
    BillingDataId INT IDENTITY PRIMARY KEY,
    BillingId INT NOT NULL,
    Feature VARCHAR(50) NOT NULL,
    Usage INT NOT NULL,
    Measurement VARCHAR(50),
    Cost NUMERIC(18,2) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server pivot

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

将多行合并为最少数量的不同值行

在 SQL Server 中,是否有人知道将多行数据合并/展平为仅包含不同非空值的尽可能少的行的好方法。

IE

像这样的数据集: 前

像这样: 后

如果有帮助,之前的数据集是一个透视线列表,但没有聚合。我无法在枢轴期间聚合它,因为我想保留每个不同的值而不是采用 MAX 或 MIN。

我能想到的唯一方法是将数据拆分并将它们全部重新组合在一起,这不会非常有效。

sql-server pivot sql-server-2012

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

使用 XQuery 正确旋转 XML 列

我想透视 SQL XML 列的属性和值,并以有序的列和行格式显示它。

首先,这是 XML 列在 SQL 中的样子:

<Model xmlns:dsc="ModelDescriptive" xmlns:draw="ModelDraw" xmlns:display="Display" xmlns:thd="Model3D">
  <dsc:Model name="15DE">
    <dsc:Defs>
      <dsc:Materials>
        <dsc:Material ref="E-HD-AnoAno" baseRef="E-HD" type="rod" productionGroup="OPTION" />
        <dsc:Material ref="E-3L44A-CLEAR" baseRef="E-3L44A" type="piece" productionGroup="OPTION" />
        <dsc:Material ref="R-TH01" baseRef="R-TH-TH" type="rod" productionGroup="ASSEMBLY" />
        <dsc:Material ref="M-TH05" baseRef="M-TH" type="meter" productionGroup="MOLDING" />
      </dsc:Materials>
    </dsc:Defs>
  </dsc:Model>
</Model>
Run Code Online (Sandbox Code Playgroud)

...这是我的查询:

 SELECT
      x.y.value('local-name(..)', 'VARCHAR(MAX)') ParentElementName
     ,x.y.value('local-name(.)', 'VARCHAR(MAX)') Attribut
     ,x.y.value('.', 'VARCHAR(MAX)') Value
     ,Row_number() Over(Partition by x.y.value('local-name(..)', 'VARCHAR(MAX)') order by x.y.value('local-name(..)', 'VARCHAR(MAX)') ASC)  as rn
 FROM @xmlDescriptive.nodes('//*[text()], //@*') AS x(y)
 WHERE x.y.value('local-name(..)', 'VARCHAR(MAX)')= 'Material'
 ORDER BY …
Run Code Online (Sandbox Code Playgroud)

xml pivot xquery sql-server-2014

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