【发布时间】:2018-07-23 22:46:42
【问题描述】:
我有两张桌子
表1
ID SID Date value
1 1 2017-12-31 22.36
1 1 2018-03-31 20.0
1 1 2018-06-30 10.87
1 1 2018-09-30 67.98
1 2 2017-12-31 55.987
1 2 2018-03-31 60.12
1 2 2018-06-30 62.0
1 2 2018-09-30 15.543
1 3 2017-12-31 85.987
1 3 2018-03-31 40.12
1 3 2018-06-30 12.0
1 3 2018-09-30 15.543
表2
ID SID Date value
2 1 2017-12-31 22.36
2 1 2018-03-31 10.0
2 1 2018-06-30 10.87
2 1 2018-09-30 67.98
2 2 2017-12-31 55.987
2 2 2018-03-31 60.12
2 2 2018-06-30 31.0
2 2 2018-09-30 15.543
2 3 2017-12-31 85.987
2 3 2018-03-31 40.12
2 3 2018-06-30 06.0
Table1 是基表。
表1和表2包含季度数据,SID在这两个表中是通用的。
我正在努力实现:
- 找出数值列中减少/增加的百分比 表 1 和表 2 各自的 SID。如果表 1 和表 2 的 SID 为 缺少然后显示一条消息。
下面是预期的结果
ID SID Date value percent increase/decrease
1 1 2017-12-31 22.36 0
1 1 2018-03-31 20.018 50
1 1 2018-06-30 10.87 0
1 1 2018-09-30 67.98 0
1 2 2017-12-31 55.987 0
1 2 2018-03-31 60.12 0
1 2 2018-06-30 31.0 50
1 2 2018-09-30 15.543 0
1 3 2017-12-31 85.987 0
1 3 2018-03-31 40.12 0
1 3 2018-06-30 12.0 50
1 3 2018-09-30 15.543 data not available to compare in table 2
这可以实现吗? 我正在尝试编写一个查询来通过 JOIN 来实现这一点,但离它还很远。以下是示例查询。
SELECT t1.ID,t1.SID,t1.Date,t1.value,
CASE WHEN (t1.Value -t2.Value/t1.value)*100=50 THEN '50' END AS 'percent increase/decrease'
FROM table t1 INNER JOIN table t2
ON t1.SID=t2.SID
对此有任何提示/想法吗?
谢谢!
【问题讨论】:
-
顺便说一句 - 如果这是一个单一的数据库 - 您可能需要重新考虑数据库设计,两个表具有相同的结构,因此它们可能是一个带有标识符字段的表
标签: sql sql-server tsql