相关疑难解决方法(0)

SQL:动态视图,其列名基于源表中的列值

鉴于这里有两个样本表:

门票表

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)

值得注意的是,属性表并不总是相同.一些"门票"可能具有其他人没有的属性.

这甚至可能吗?

sql sql-server sql-server-2005

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

转置没有聚合的行和列

我有以下数据集

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)

问题还在于我有一个不固定的帐户数量和未固定数量的联系人

sql-server pivot sql-server-2008

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

从select sql动态列名

我从我的数据库输出以下数据

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.数据和图像不相关,因此不要被图像欺骗.这只是一个例子

sql sql-server pivot sql-server-2008

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

Oracle SQL:在多个列/字段上进行透视

我想创建一个表,其中各列的条目"旋转"到列标题.该表用于报告目的 - 我的用户希望通过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)

sql oracle microsoft-query

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

具有多个聚合列和总计列的 SQL Server PIVOT

我想生成一个数据透视表,每个数据透视列有 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)

t-sql sql-server pivot aggregate pivot-table

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

SQL查询以基于列值重复显示列

我的桌子是:-

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 sql-server

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

SQL 基于列对数据进行分组,然后将行转置为列

我正在尝试将 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)

sql t-sql sql-server pivot group-by

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

用于生成列值的SQL语句

请参阅下面的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 sql-server

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

转置/将不同的行属性转换为列,并将另一个属性分组?

可能重复:
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)

它将每个不同的玩家变成一列,并将游戏分组,从而为每个玩家每个游戏提供目标。

sql sql-server pivot

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

编写高级SQL选择

物品表:

|   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)

sql t-sql sql-server pivot

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