鉴于这里有两个样本表:
门票表
ID User Description
0 James This is a support ticket
1 Fred This is a ticket too
Run Code Online (Sandbox Code Playgroud)
属性表
ID TicketID Label Value
0 0 Engineer Scott
1 1 Engineer Dale
2 0 Manu Dell
3 1 Manu HP
4 0 OS Windows
5 1 OS Linux
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的观点:
ID User Description Engineer Manu OS
1 James This is a support ticket Scott Dell Windows
2 Fred This is a ticket too Dale HP Linux
Run Code Online (Sandbox Code Playgroud)
值得注意的是,属性表并不总是相同.一些"门票"可能具有其他人没有的属性.
这甚至可能吗?
我有以下数据集
Account Contact
1 324324324
1 674323234
2 833343432
2 433243443
3 787655455
4 754327545
4 455435435
5 543544355
5 432455553
5 432433242
5 432432432
Run Code Online (Sandbox Code Playgroud)
我想输出如下:
Account Contact1 Contact2 Contact3 Contact4
1 324324324 674323234
2 833343432 433243443
3 787655455
4 754327545 455435435
5 543544355 432455553 432433242 432432432
Run Code Online (Sandbox Code Playgroud)
问题还在于我有一个不固定的帐户数量和未固定数量的联系人
我从我的数据库输出以下数据
Observation 1 aug -2015
Improvement suggestion 1 dec -2015
Observation 1 dec -2015
Accident 2 jan -2016
Non Conformity 5 jan -2016
Observation 5 jan -2016
Run Code Online (Sandbox Code Playgroud)
我试图找出如何使用PIVOT表来使这项工作,但不能使它工作.日期是动态的,具体取决于数据库中的日期.我正在寻找的输出如下.有人可以指点我正确的方向吗?
看看我到目前为止尝试过的小提琴我知道它现在正在使用SUM,这是不正确的,但我无法弄清楚要使用什么.http://sqlfiddle.com/#!3/0bd0c/4
PS.数据和图像不相关,因此不要被图像欺骗.这只是一个例子
我想创建一个表,其中各列的条目"旋转"到列标题.该表用于报告目的 - 我的用户希望通过Excel(使用Microsoft Query)查询数据,问题是在Excel中进行数据透视会使文件变得非常大且速度慢,即使对于中等大小的数据集(~100k数据点) ).
请考虑以下示例:
CREATE TABLE tt
(
"COMMODITY" VARCHAR2(4000 BYTE),
"MARKET" VARCHAR2(4000 BYTE),
"BID_ASK" VARCHAR2(4000 BYTE),
"PRICE" NUMBER
);
INSERT INTO tt VALUES ('Gold','US','Ask',1.1);
INSERT INTO tt VALUES ('Gold','US','Bid',1);
INSERT INTO tt VALUES ('Gold','EU','Ask',1.2);
INSERT INTO tt VALUES ('Gold','EU','Bid',1.1);
INSERT INTO tt VALUES ('Oil','US','Ask',11);
INSERT INTO tt VALUES ('Oil','US','Bid',10);
INSERT INTO tt VALUES ('Oil','EU','Ask',12);
INSERT INTO tt VALUES ('Oil','EU','Bid',11);
Run Code Online (Sandbox Code Playgroud)
我想要实现的输出类似于(确切的列标题并不重要):
COMMODITY 'US_Bid' 'US_Ask' 'EU_Bid' 'EU_Ask'
Gold 1 1.1 1.1 1.2
Oil 10 11 11 12
Run Code Online (Sandbox Code Playgroud)
现在可以直接转动单个列:
SELECT …Run Code Online (Sandbox Code Playgroud) 我想生成一个数据透视表,每个数据透视列有 2 个总和聚合。然后在枢轴列的右侧,我想要一些总列。最后,枢轴列的数量是动态的。我的首选结果如下:
我的数据如下所示:
从这个答案来看,我已经非常接近解决它了。这是我所拥有的:
SELECT *
FROM (
SELECT B.SiteID, R.BuildingID, C.*
FROM Rooms R JOIN Buildings B
ON R.BuildingID = B.BuildingID
CROSS APPLY (
VALUES(RTRIM(RoomType) + ' NASF', AreaNASF)
,(RTRIM(RoomType) + ' RSF', AreaRSF)
) C (Item,Value)
) src
PIVOT (
SUM([Value])
FOR [Item] IN ([CONFERENCE NASF], [CONFERENCE RSF], [OFFICE NASF], [OFFICE RSF], [STORAGE NASF], [STORAGE RSF])
) pvt
Run Code Online (Sandbox Code Playgroud)
其产生:
我的印象是我必须在 SQL 之外执行两行标题。我需要帮助的是如何添加总列数。STUFF另外,除了我在很多地方看到的解决方案之外,还有更好的动态列解决方案吗?
以下是创建示例数据的 SQL:
CREATE TABLE Buildings (
BuildingID CHAR(12),
SiteID CHAR(12),
Name …Run Code Online (Sandbox Code Playgroud) 我的桌子是:-
DECLARE @Tab TABLE(VId INT,QuestionNoId INT,AnswerType VARCHAR(20),Answer VARCHAR(100))
INSERT INTO @Tab(Vid, QuestionNoId, AnswerType, Answer)VALUES
(2370, 1, 'Text', '1'),
(2370, 1, 'Per', '78'),
(2370, 1, 'Date', '04/05/2019'),
(2370, 2, 'Text', '1'),
(2370, 3, 'Text', '2'),
(2370, 4, 'YesNo','D'),
(2370, 5, 'Text', '68'),
(2370, 6, 'Text', '44'),
(2370, 6, 'Date', '05/05/2019'),
(2370, 7, 'YesNo','Y'),
(2370, 8, 'YesNo','N'),
(2370, 9, 'YesNo', 'Y')
select * from @Tab
Run Code Online (Sandbox Code Playgroud)
我想显示基于我的QuestionNoId的结果查询,应基于QuestionNoId增加列数。如果QuestionNoId重复3次,则应创建3列,如果它是1,则仅创建一列。
在下面找到我想要的输出:-
DECLARE @Tab1 TABLE(VId INT,QuestionNoId INT,AnswerType VARCHAR(20),Answer VARCHAR(100),AnswerType1 VARCHAR(20),Answer1 VARCHAR(100),AnswerType2 VARCHAR(20),Answer2 VARCHAR(100))
INSERT INTO @Tab1(Vid, QuestionNoId, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 SQL 表行转置为列,但我需要根据“测验”列中的组创建结果行。
我已经阅读了有关将行转置为列的线程,但由于我想要实现的目标涉及对列进行分组,并且我需要使用“分数”列中的所有值,所以我无法弄清楚如何实现我想要的结果。
原表:
Quiz | Name | Score
---------------------------
A | Andy | 10
A | Drew | 8
A | Mark | 7
A | Samm | 6
B | Andy | 9
B | Drew | 7
B | Mark | 7
B | Samm | 9
Run Code Online (Sandbox Code Playgroud)
查询结果:
Quiz | Andy | Drew | Mark | Samm
-----------------------------------------
A | 10 | 8 | 7 | 6
B | 9 | 7 | 7 | 9 …Run Code Online (Sandbox Code Playgroud) 请参阅下面的DDL:
create table Person (ID int, [Type] int)
insert into Person values (1,1)
insert into Person values (2,1)
insert into Person values (3,2)
insert into Person values (4,3)
insert into Person values (5,4)
insert into Person values (6,5)
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样的结果:
2 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
以下条件生成此结果:
There are 2 persons with a type of 1 (The first column value is: 2)
There is 1 person with a type of 2 (The second column value is: 1)
There is 1 person with …Run Code Online (Sandbox Code Playgroud) 可能重复:
SQL Server动态PIVOT查询?
是否可以对下表执行查询:
Game Player Goals
----- ------ ------
Game1 John 1
Game1 Paul 0
Game1 Mark 2
Game1 Luke 1
Game2 John 3
Game2 Paul 1
Game2 Luke 1
Game3 John 0
Game3 Mark 2
Run Code Online (Sandbox Code Playgroud)
结果如下:
Game John Paul Mark Luke
----- ---- ---- ---- ----
Game1 1 0 2 1
Game2 3 1 - 1
Game3 0 - 2 -
Run Code Online (Sandbox Code Playgroud)
它将每个不同的玩家变成一列,并将游戏分组,从而为每个玩家每个游戏提供目标。
物品表:
| Item | Qnty | ProdSched |
| a | 1 | 1 |
| b | 2 | 1 |
| c | 3 | 1 |
| a | 4 | 2 |
| b | 5 | 2 |
| c | 6 | 2 |
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用SQL输出它SELECT?
| Item | ProdSched(1)(Qnty) | ProdSched(2)(Qnty) |
| a | 1 | 4 |
| b | 2 | 5 |
| c | 3 | 6 …Run Code Online (Sandbox Code Playgroud)