相关疑难解决方法(0)

SQL Server:将行转置为列

除了将光标写入每行并将其填充到列中之外,如果我需要将每行转置为列,还有其他任何替代方法吗?

TimeSeconds TagID Value
1378700244  A1    3.75
1378700245  A1    30
1378700304  A1    1.2
1378700305  A2    56
1378700344  A2    11
1378700345  A3    0.53
1378700364  A1    4
1378700365  A1    14.5
1378700384  A1    144
1378700384  A4    10
Run Code Online (Sandbox Code Playgroud)

列数不固定.

输出:我刚刚将n/a指定为占位符,该交集中没有数据.

TimeSec     A1    A2    A3    A4
1378700244  3.75  n/a   n/a   n/a
1378700245  30    n/a   n/a   n/a
1378700304  1.2   n/a   n/a   n/a
1378700305  n/a   56    n/a   n/a
1378700344  n/a   11    n/a   n/a
1378700345  n/a   n/a   0.53  n/a
1378700364  n/a   n/a   n/a   4
1378700365  14.5  n/a   n/a …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005

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

SQL转置全表

我需要在MS SQL中进行以下转置

从:

Day  A  B 
---------
Mon  1  2
Tue  3  4
Wed  5  6
Thu  7  8
Fri  9  0
Run Code Online (Sandbox Code Playgroud)

以下内容:

Value Mon Tue Wed Thu Fri 
--------------------------
A      1   3   5   7   9
B      2   4   6   8   0
Run Code Online (Sandbox Code Playgroud)

我知道PIVOT当只有一列(A)时怎么做,但是当有多列要转置时我无法弄清楚怎么做(A,B,...)

要转置的示例代码:

select LEFT(datename(dw,datetime),3) as DateWeek, 
  sum(ACalls) as A, 
  Sum(BCalls) as B 
from DataTable
group by LEFT(datename(dw,datetime),3)
Run Code Online (Sandbox Code Playgroud)

表结构:

Column DataType
DateTime Datetime
ACalls int
BCalls int
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽.

sql sql-server pivot unpivot

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

在SQL Server 2005中将列显示为行

我已经阅读了几十个解决类似换位问题的解决方案,就像我即将提出的问题一样,但奇怪的是没有一个能够完全反映我的问题.我只是想在一个简单的仪表板类型数据集中将我的行翻转到列.

从各种事务表中提取的数据如下所示:

DatePeriod  PeriodNumberOverall   Transactions   Customers   Visits

'Jan 2012'   1                    100            50          150
'Feb 2012'   2                    200            100         300
'Mar 2012'   3                    300            200         600
Run Code Online (Sandbox Code Playgroud)

我希望能够生成以下内容:

                      Jan 2012   Feb 2012   Mar 2012

Transactions          100        200        300
Customers             50         100        200
Visits                150        300        600
Run Code Online (Sandbox Code Playgroud)

指标将是静态的(交易,客户和访问),但日期周期将是动态的(IE - 随着月份的增加而增加).

再一次,我已经准备好了许多利用pivot,unpivot,存储过程,UNION ALLs等的例子,但没有任何我没有做任何聚合的事情,只是字面上转换整个输出.我还在Visual Studio 2005中使用带有嵌入列表的矩阵找到了一种简单的方法,但我无法将最终输出导出到excel,这是一项要求.任何帮助将不胜感激.

sql t-sql pivot sql-server-2005

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

SQL Server中的动态数据透视表

您好我有下表,我想将EcoYear转向顶部,但没有一定的年限,这些年可以随时开始.另外,不同的情况会有不同的起始年份,所以我需要它来填0而不是null.

CaseID EcoYear NetInv NetOil NetGas
38755   2006   123     2154         525 
38755   2007   123     2154         525 
38755   2008   123     2154         525 
38755   2009   123     2154         525 
38755   2010   123     2154         525 
38755   2011   123     2154         525 
38755   2012   123     2154         525 
38755   2013   123     2154         525 
38755   2014   123     2154         525 
38755   2015   123     2154         525 
38755   2016   123     2154         525 
38755   2017   123     2154         525 
38755   2018   123     2154         525 
38755   2019   123     2154         525 
38755   2020   123     2154 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server pivot

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

查询将垂直更改为水平

我有一个表 Machine_Mode_Duration:

在此输入图像描述

我需要一个查询,以便它显示如下:

在此输入图像描述

感谢建议!

sql database sql-server pivot

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

SQL Server:组合列中止相同的值

我正在使用ADO连接SQL Server.我有一张桌子,我想将一些cols分组到一个col.我需要新col中的值是不同的.

这是我的需要

在此输入图像描述

谢谢大家!

sql sql-server

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

SQL Server - 将行转置为列

我已经搜索了高低,以获得答案,如果它已经回答了,那么道歉!我在SQL 2005中的查询中得到以下结果:

ID

1234

1235

1236

1267

1278
Run Code Online (Sandbox Code Playgroud)

我想要的是

column1|column2|column3|column4|column5
---------------------------------------
1234   |1235   |1236   |1267   |1278
Run Code Online (Sandbox Code Playgroud)

我不能完全理解枢轴操作员,但看起来它会涉及到它.我现在可以使用只有5行,但奖励将是动态的,即可以扩展到x行.

编辑:我最终将每个结果列的值分配给变量,例如

DECLARE @id1 int, @id2 int, @id3 int, @id4 int, @id5 int

SELECT @id1 = column1, @id2 = column2, @id3 = column3, @id4 = column4, 
@id5 = column5 FROM [transposed_table]
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2005

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

在SQL Server 2008中透视数据

我有一个如下结果集:

MinID       MaxID   ColumnName
----------  ------- -------------------
167         34458   AccountManager
174         174     ClientDeliveryDate
184         184     LocalContactEmail
192         34459   ProjectDeveloper
194         194     ServiceType
Run Code Online (Sandbox Code Playgroud)

我想要一个结果集如:

AccountManager ClientDeliveryDate LocalContactEmail ProjectDeveloper ServiceType
-------------- ------------------ ----------------- ---------------- -----------
167            174                184               192              194
34458          174                184               34459            194
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

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

T-SQL中的行最大值

我有一个包含几列的表,并且对于每行我想要最大值:

-- Table:
+----+----+----+----+----+
| ID | C1 | C2 | C3 | C4 |
+----+----+----+----+----+
|  1 |  1 |  2 |  3 |  4 |
|  2 | 11 | 10 | 11 |  9 |
|  3 |  3 |  1 |  4 |  1 |
|  4 |  0 |  2 |  1 |  0 |
|  5 |  2 |  7 |  1 |  8 |
+----+----+----+----+----+


-- Desired result:
+----+---------+
| ID | row_max …
Run Code Online (Sandbox Code Playgroud)

sql t-sql unpivot

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

SQL Server表计算

鉴于:

+-----------+---------------+-------------+-------+
|   Name    |   Item        | Year        | Value |
+-----------+---------------+-------------+-------+
| Company A | Sales         | 2017        |   100 |
| Company A | Sales         | 2016        |   100 |
| Company A | Sales         | 2015        |   400 |
| Company A | Profit        | 2017        |    50 |
| Company A | Profit        | 2016        |    50 |
| Company A | Profit        | 2015        |   200 |
| Company B | Sales         | 2017        | …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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