我有一个表结构是:
year | code | name| value | wef |
2014 | a001 | abe | 2000 | 2014-04-01 |
2014 | a001 | def | 3000 | 2014-05-01 |
2014 | a002 | abe | 2000 | 2014-06-01 |
2014 | a003 | def | 2000 | 2014-04-01 |
2014 | a003 | mno | 5000 | 2014-06-01 |
Run Code Online (Sandbox Code Playgroud)
我需要的结果格式为:
year | code | abe | abe__wef | def | def__wef | mno | mno____wef |
2014 | a001 …Run Code Online (Sandbox Code Playgroud) 具体来说,我有一个事件表,用于记录用户加入或离开团队的时间。它看起来像下面这样:
-------------------------------------
| user | event | team | timestamp |
-------------------------------------
| A | joined | 1 | 2016-1-1 |
| B | joined | 1 | 2016-1-1 |
| C | left | 1 | 2016-1-1 |
| C | joined | 2 | 2016-1-1 |
| A | left | 1 | 2016-1-2 |
| A | joined | 2 | 2016-1-2 |
| B | left | 1 | 2016-1-3 |
| A | left | …Run Code Online (Sandbox Code Playgroud) 我有一个视图,我在其中提取车辆的属性,例如轮胎尺寸、发动机容量、颜色、门数等。这些数据存储在多个表中,但我已将数据简化到我的视图中。
我想要实现的是将此视图加入我的主车辆表,以便我可以选择各种属性作为单行中的列。
我的看法:
Vehicle_ID Property Value
1 Doors 2
1 Engine Size 2 liter
1 Tire Size 50cm
1 Color Blue
2 Doors 4
2 Engine Size 3 liter
Run Code Online (Sandbox Code Playgroud)
还有我的主要车辆表:
Vehicle_ID Description Date_Bought Owner_ID
1 BMW M3 Sport 2000/12/23 1
2 Audi A5 3XL 2015/03/19 1
Run Code Online (Sandbox Code Playgroud)
所以我想出去的是
Vehicle ID Description Date_Bought Doors [Engine Size] [Tire Size] [Color]
1 BMW M3 Sport 2000/12/23 2 2 liter 50cm Blue
Run Code Online (Sandbox Code Playgroud)
我的整体 SQL 知识相当有限,我很擅长 JOINS 和其他东西,但是 PIVOT 命令的逻辑及其语法完全让我望而却步。
我有一张桌子,上面有一些名字,上面有 3 个运动项目。如果该人练习这项运动,则显示“1”,否则显示“0”。
如何使用 SQL 更改表,使其仅显示每人一行,如下所示:
Regrads,埃利奥·费尔南德斯
我遇到了与在单个结果中连接一对多字段相同的问题?,但我需要一个结果,其中“许多”字段占据自己的列并且没有连接在一列中。有什么建议?
样本数据:
___ID Mapped_Heading Source_Value
1 English pass
1 Math pass
1 History fail
___ID Name Age
1 Bob 12
2 Harry 12
3 Emily 14
Run Code Online (Sandbox Code Playgroud)
最终结果将是:
___ID Name Age English Math History
1 Bob 12 pass pass fail
Run Code Online (Sandbox Code Playgroud)
我希望我也不会用PIVOT和PARTITION BY,因为我不熟悉这些功能,但我一直撞到他们对于这个问题这么认为,我可能有什么打算?
我有一张下表
| PK | 姓名 | 氟肯 |
|---|---|---|
| 01 | ABC | 01FK |
| 02 | BCA | 01FK |
| 03 | 出租车 | 02FK |
| 04 | XYZ | 03FK |
| 05 | yzx | 02FK |
我想生成一个新表,其中 FK 为主表,其余列基于 FK 合并。所以最终结果看起来像这样:
| 氟肯 | 姓名 |
|---|---|
| 01FK | 美国广播公司、英国广播公司 |
| 02FK | 驾驶室,yzx |
| 03FK | XYZ |
这看起来也正是我所需要的。然而,不精通查询,无法理解其中的一些内容..所以你能为我澄清一些事情吗?
;WITH x AS <--- is this a comment?
( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY ID, [Type] ORDER BY [Contact No]) FROM dbo.SourceTable )
SELECT ID, HPhone = MAX(CASE WHEN [Type] = 'home' THEN [Contact No] END),
CPhone1 = MAX(CASE WHEN [Type] = 'cell' AND rn = 1 THEN [Contact No] END),
CPhone2 = MAX(CASE WHEN [Type] = 'cell' AND rn = 2 THEN [Contact No] END),
WPhone1 = MAX(CASE WHEN [Type] = 'work' AND rn = …Run Code Online (Sandbox Code Playgroud)