相关疑难解决方法(0)

编写高级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
查看次数

在没有GROUPING BY的情况下在SQL Server中透视或转置表

我需要使用以下结构在SQL Server中透视表:

CREATE TABLE table1 (
    ColumnNumber int,
    RowNumber int,
    CellData nvarchar(50)
)

INSERT INTO table1 VALUES
(1, 1, 'Orange'),
(2, 1, 'Apple'),
(3, 1, 'Banana'),
(1, 2, 'Grape'),
(2, 2, 'Corn'),
(3, 2, 'Lemon'),
(1, 3, 'Tomato'),
(2, 3, 'Lettuce'),
(3, 3, 'Onion')
Run Code Online (Sandbox Code Playgroud)

我需要结果表看起来像这样:

在此输入图像描述

因此,ColumnNumber行中的单元格现在是结果表的列名称.最难的部分是不同列数的数量是可变的(所以现在,我们有3个列号,但明天可能有6或10个).

我一直在看PIVOT函数,但是所有的例子都包括a GROUP BY,而且,正如你在这里看到的,我需要一些更像"transpose"excel函数的东西.

谢谢 !!

sql-server transpose pivot

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

在SQL中将行更改为列

我有这样的查询:

SELECT ItemMaster.ERPItemCode, DistributorStock.Qty
FROM DistributorStock INNER JOIN
ItemMaster ON DistributorStock.ItemMasterId = ItemMaster.Id
WHERE (DistributorStock.DistributionCenterId = 2)
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

我想将查询更改为以Item Code列显示,而不是以行显示.我怎样才能做到这一点?

sql sql-server sql-server-2008

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

透视3个表中的2列并创建pivot-column-names以避免冲突 - SQL-Server 2008R2

介绍和问题

在我的例子中,我有老师,学生和课程.我想概述哪个课程由谁在本课程的哪些房间和所有学生中进行教学.我有基本的设置runnig(带有一些手动编码的语句).但直到现在我没有运气准备正确的STUFF声明:

  • 准备,@colsStudents以便我可以将名称放在列标题中,并删除混乱ID(添加100)的需要,以避免在rooms.id和students.id之间发生冲突
  • 做好准备,@colsRooms这样我就不必为房间名称加油
  • 通过使用我把所有人放在一起 EXEC sp_executesql @sql;

您可以找到所有sql语句来创建此架构和最后的数据.

表Diagramm

通缉成绩概述课程,

我想转动列RoomName,StudentName并使用列值作为新列名称.所有用于创建表和数据的SQL语句都在最后.

Id | Course | Teacher | A3 | E7 | Penny | Cooper | Koothrap. | Amy
---+--------+---------+----+----+-------+--------+-----------+-----+
1  | C# 1   | Marc G. |    | 1  |  1    |        |           |
2  | C# 2   | Sam S.  |    | 1  |  1    |        |      1    |
3  | C# 3   | John S. | 1  |    |       | …
Run Code Online (Sandbox Code Playgroud)

sql pivot sql-server-2008

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

SQL Server选择特定的DataFrame格式

我有一个表,其中包含Date,Identifier和Price等列

| Identifier |   Date   | Price |
|------------|----------|-------|
|    693477AA|1990/10/31|    100|
|    353477ZB|1991/08/31|    101|
|    123457ZB|1992/08/31|    105|
Run Code Online (Sandbox Code Playgroud)

我正在使用pandas read_sql函数从SQL Server数据库中获取数据.使用SQL或pandas DataFrame功能我需要将数据转换为以下pandas DataFrame格式.

           693477AA     353477ZB     123457ZB
Date           
1988-1-1        NaN          NaN        99.41
1988-1-2     100.54          NaN        98.11
1988-1-3      99.45          NaN          NaN 
Run Code Online (Sandbox Code Playgroud)

因此,表中的每个DISTINCT日期都有一个(可能是空的)价格条目.对于满足条件的标识符集.

现在我让它使用for循环,

data = []
identifiers = "SELECT DISTINCT Identifier FROM TABLE WHERE [Condition]"
for id in identifiers:
    data.append("SELECT Date, Price FROM TABLE WHERE Identifier=[id] ORDER BY DATE")
pandas.concat(data, axis=1)
Run Code Online (Sandbox Code Playgroud)

然而,这仅适用于非常严格的[条件],因为该表非常大(> 3M行).

如何实现SQL,DataFrame操作或两者的组合以实现所需的格式?

谢谢.

python sql sql-server python-2.7 pandas

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

在组内分组和计数

我有一个场景,我想在分组数据后计算记录.(实际方案包含多个表.)

create table tblXYZ
(
id int,
Age int,
Typ char
)
Run Code Online (Sandbox Code Playgroud)

表包含此数据:

| ID | Age  | Typ
------------------
| 1  | 20   | A
| 2  | 20   | A
| 3  | 21   | B
| 4  | 22   | B
| 5  | 22   | A
| 6  | 23   | B
| 7  | 23   | A
| 8  | 23   | A
| 9  | 25   | B
| 10 | 25   | B …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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