我的任务是提出翻译以下数据的方法:
date category amount
1/1/2012 ABC 1000.00
2/1/2012 DEF 500.00
2/1/2012 GHI 800.00
2/10/2012 DEF 700.00
3/1/2012 ABC 1100.00
Run Code Online (Sandbox Code Playgroud)
进入以下内容:
date ABC DEF GHI
1/1/2012 1000.00
2/1/2012 500.00
2/1/2012 800.00
2/10/2012 700.00
3/1/2012 1100.00
Run Code Online (Sandbox Code Playgroud)
空白点可以是NULL或空白,也可以是好的,并且类别需要是动态的.另一个可能的警告是,我们将以有限的容量运行查询,这意味着临时表已经出局.我已经尝试过研究并且已经登陆了,PIVOT但是在我真的不理解它之前我从未使用过它,尽管我尽了最大的努力去解决它.谁能指出我正确的方向?
我的数据库中有这样的表(SQL Server 2008)
ID Type Desc
--------------------------------
C-0 Assets No damage
C-0 Environment No impact
C-0 People No injury or health effect
C-0 Reputation No impact
C-1 Assets Slight damage
C-1 Environment Slight environmental damage
C-1 People First Aid Case (FAC)
C-1 Reputation Slight impact; Compaints from local community
Run Code Online (Sandbox Code Playgroud)
我必须将Assets,People,Environment和Reputation显示为列,并将匹配的Desc显示为值.但是当我运行数据透视查询时,我的所有值都为空.
有人可以查看我的查询并告诉我我在哪里做错了吗?
Select severity_id,pt.[1] As People, [2] as Assets , [3] as Env, [4] as Rep
FROM
(
select * from COMM.Consequence
) As Temp
PIVOT
(
max([DESCRIPTION])
FOR [TYPE] In([1], …Run Code Online (Sandbox Code Playgroud) 我是 AWS Athena 的新手,并试图将一些行转为列,类似于此StackOverflow 帖子中的最佳答案。
但是,当我尝试时:
SELECT column1, column2, column3
FROM data
PIVOT
(
MIN(column3)
FOR column2 IN ('VALUE1','VALUE2','VALUE3','VALUE4')
)
Run Code Online (Sandbox Code Playgroud)
我收到错误: mismatched input '(' expecting {',', ')'} (service: amazonathena; status code: 400; error code: invalidrequestexception
有谁知道如何在 AWS Athena 中完成我想要实现的目标?
我有一个这样订购的数据库:
ID | Subject | Value
---------------------------------------------
1 Subj1 Val1
1 Subj2 Val2
2 Subj1 Val3
2 Subj5 Val4
Run Code Online (Sandbox Code Playgroud)
等等。ID 数以千计,受试者数以万计。
我想找到这个矩阵的转置。我怎么做?
如果主题是一个小的静态集,那么我可以使用 CASE 语句,如以下解决方案所示:SQLITE - transpose rows into columnsproperly,但在我的情况下,主题是一个大的动态集,所以 CASE 将无法工作,除非我正在数据库外部的某些应用程序中动态构建 SQL。就我而言,没有“应用程序”;正如我在下面的评论中提到的,我正在寻找一个纯 SQL 解决方案。
问题是:我正在使用 SQLite,它缺少 PIVOT 语句,这将使这变得更容易。我不知道是否还有办法做到这一点,并且没有学到太多过去的连接类型。对于较小的数据库,我会尝试一系列左连接,但由于结果中有很多列值,我不知道如何操作。
如何转换成这种形式?
ID | Subj1 | Subj2 | Subj3 | etc.
--------------------------------------------------------------------
1 Val1 Val2 0
2 Val3 0 0
Run Code Online (Sandbox Code Playgroud) 如果可能的话,我想使用 t-sql 数据透视函数将我的数据从长数据透视到宽数据。我当前的表看起来像:
ID DATE NUM VALUE
1 2005-01-20 29 197
1 2005-01-20 28 58
1 2005-01-20 30 90
1 2005-02-08 29 210
1 2005-02-08 30 133
1 2005-02-08 28 67
2 2005-01-10 28 87
2 2005-01-10 30 119
2 2005-07-11 28 77
2 2005-07-11 29 174
Run Code Online (Sandbox Code Playgroud)
输出应如下所示:
ID DATE V28 V29 V30
1 2005-01-20 58 197 90
1 2005-02-08 67 210 133
2 2005-01-10 87 NULL 119
2 2005-07-11 77 74 NULL
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含程序集编号和每个组件的行.
我有一个Assembly带有唯一标识符的表,可以绑定到inv_mast表以及该表中可以绑定到同一个inv_mast表的组件.它还包括序列号.
inv_mast_uid | sequence_number | component_inv_mast_uid
453061 | 1 | 453024
453061 | 2 | 453017
453061 | 3 | 453020
453062 | 1 | 453019
453062 | 2 | 453027
Run Code Online (Sandbox Code Playgroud)
(我的一些条目只有2个组件)
我想要实现的是:
inv_mast_uid | component_inv_mast_uid_1 | component_inv_mast_uid_2 | component_inv_mast_uid_3
453061 | 453024 | 453017 | 453020
453062 | 453019 | 453027 | Null
Run Code Online (Sandbox Code Playgroud)
我以为我会使用'For Each`循环,但我从来没有运气和SQL Server
我认为是一个相当简单的查询似乎比我预期的更棘手.
我有两张桌子.与一对多的关系.我想要做的是表2返回的任何记录,我希望它在一个单独的列中.我已经设法在以下查询中使用相对较小的数据并知道第二个表返回的内容.
样本数据
DECLARE @TABLE1 TABLE(UserID INT,Episode INT ,[Value] VARCHAR(100))
INSERT INTO @TABLE1 VALUES
(1, 1,'VALUE 1-1'),(1, 2,'VALUE 1-2')
DECLARE @TABLE2 TABLE(UserID INT,Episode INT ,[Details] VARCHAR(100))
INSERT INTO @TABLE2 VALUES
(1, 1,'Details 1'),(1, 1,'Details 2'),(1, 2,'Details 1'),(1, 2,'Details 2')
Run Code Online (Sandbox Code Playgroud)
简单加入
SELECT ONE.UserID
, ONE.Episode
, ONE.Value
, TWO.Details
FROM @TABLE1 ONE INNER JOIN @TABLE2 Two
ON ONE.UserID = TWO.UserID
AND ONE.Episode = TWO.Episode
????????????????????????????????????????????
? UserID ? Episode ? Value ? Details ?
????????????????????????????????????????????
? 1 ? 1 ? VALUE …Run Code Online (Sandbox Code Playgroud) 我是SQL Server的新手并且正在努力解决这个问题.
我有两个选择语句
SELECT
SUM(Amount) AS "MONDAY"
FROM
Transaction
WHERE
Transaction_Date = '2015-12-21 00:00:00.000'
SELECT
SUM(Amount) AS "TUESDAY"
FROM
Transaction
WHERE
Transaction_Date = '2015-12-22 00:00:00.000'
Run Code Online (Sandbox Code Playgroud)
他们的结果分别为2,00,000和3,00,000
我希望输出显示为两列
SQL Server屏幕上的(第1列+星期一)和(第2列=星期二)
有没有办法转置这个表:
A a
A b
A c
A d
B e
B f
C g
C h
C i
Run Code Online (Sandbox Code Playgroud)
这个?
A B C
a e g
b f h
c i
d
Run Code Online (Sandbox Code Playgroud)
非常感谢!