我需要从 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 …
我被困在一个连接表查询上,每月显示涉及 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) 我有一个存储传感器数据的表(在 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)
我正在考虑创建一个临时表,然后插入时间和第一列,然后对时间进行连接以进行后续查询,最后选择整个批次。但这听起来效率不高,我想知道是否有更好的方法?
我的问题的简化版本如下:
我有三个表记录、输入和输出。
记录
Id
DTS
1
2015-01-01 00:00
...
输入
Id
RecordId
InputId
Value
1
1
1
100
...
...
N
1
1
105
输出
Id
RecordId
OutputId
Value
1
1
1
200
...
...
M
1
1
10
这样做是为了避免由于表中列数的限制而限制输入或输出的总数。我正在寻找针对类似于以下内容的查询的最佳(最快)方法:
DTS
Input1
...
InputN
Output1
...
OutputM
2015-01-01 00:00
100
...
105
200
...
10
...
我最初的计划是基于旋转必要的输入和输出并适当地加入它们来创建一个视图。数据只需要只读并且本质上是静态的,所以我想防止它为每个查询扩展。我读到我可以向视图添加索引以“具体化”它,但是如果视图使用 PIVOT,则无法做到这一点。
有没有人对我如何做到这一点有任何建议?或者,如果我以错误的方式处理这个问题,我很乐意接受建议。
我有以下数据,
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) 我有一个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) 是否可以使用游标创建动态表,然后使用这些列聚合 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 中,是否有人知道将多行数据合并/展平为仅包含不同非空值的尽可能少的行的好方法。
IE
像这样的数据集:

像这样:

如果有帮助,之前的数据集是一个透视线列表,但没有聚合。我无法在枢轴期间聚合它,因为我想保留每个不同的值而不是采用 MAX 或 MIN。
我能想到的唯一方法是将数据拆分并将它们全部重新组合在一起,这不会非常有效。
我想透视 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) pivot ×10
sql-server ×3
mysql ×2
performance ×2
postgresql ×2
group-by ×1
sqlite ×1
view ×1
xml ×1
xquery ×1