我是SQL Server的新手,所以不知道我在做什么.我有两个表,可能看起来像这样:
表格1
| ID | customer | Date |
| 1 | company1 | 01/08/2014 |
| 2 | company2 | 10/08/2014 |
| 3 | company3 | 25/08/2014 |
Run Code Online (Sandbox Code Playgroud)
表2
| ID | Status | Days |
| 1 | New | 6 |
| 1 | In Work | 25 |
| 2 | New | 17 |
| 3 | New | 14 |
| 3 | In Work | 72 |
| 3 | Complete | 25 |
Run Code Online (Sandbox Code Playgroud)
我需要做的是根据ID加入,并创建新列以显示每个ID在每个状态中的持续时间.每次订单进入新状态时,都会添加一个新行,并计算天数,如上面第二个表中所示.我需要从中创建的内容应该如下所示:
| ID | customer | Date | New | In Work | Complete |
| 1 | company1 | 01/08/2014 | 6 | 25 | |
| 2 | company2 | 10/08/2014 | 17 | | |
| 3 | company3 | 25/08/2014 | 14 | 72 | 25 |
Run Code Online (Sandbox Code Playgroud)
那么我需要创建这个呢?
感谢您的帮助,正如我所说,我对此很陌生.
我建议,AHiggins的链接是一个更好的候选者,可以将其标记为欺骗而不是实际被选中的那个,因为他的链接涉及联接.
WITH [TimeTable] AS (
SELECT
T1.ID,
T1.[Date],
T2.[Status] AS [Status],
T2.[Days]
FROM
dbo.Table1 T1
INNER JOIN dbo.Table2 T2
ON T2.ID = T1.ID
)
SELECT *
FROM
[TimeTable]
PIVOT (MAX([Days]) FOR [Status] IN ([New], [Complete], [In Work])) TT
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |