现有一个表有3个元素ID VALUE TIME
ID对应不同的地方,VALUE是采集的数据, TIME是采集数据的时间。
现在我要处理VALUE里面的实时数据得到我想要的:
在同一个ID中 用今天的最大值 减去 昨天最大值 得到新的VALUE_1.
组成新的表1, ID VALUE_1 TIME(日期)
在同一个ID中 用本月的最大值减去 上一个月的最大值 得到VALUE_2
组成新的表2, ID VALUE_2 TIME(月份)
把表1中不同ID同一时间的VALUE_1 全部相加得到新的VALUE_3
组成新的表3, ID VALUE_3 TIME(日期)
把表2中不同ID同一时间的VALUE_2 相加得到新的VALUE_4
组成新的表4, ID VALUE_3 TIME(月份)
SQL2005如何用当天的最大值减去最小值得到新表
答案:1 悬赏:0 手机版
解决时间 2021-03-21 21:19
- 提问者网友:最美的风景
- 2021-03-21 04:50
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-03-21 05:31
CREATE TABLE #test(
ID INT,
VALUE INT,
[TIME] DATETIME
);
INSERT INTO #test
SELECt 1, 11, '2013-07-18 10:00:00' UNIOn ALL
SELECT 1, 12, '2013-07-18 11:00:00' UNIOn ALL
SELECT 1, 13, '2013-07-18 12:00:00' UNIOn ALL
SELECT 1, 14, '2013-07-19 10:00:00' UNIOn ALL
SELECT 1, 15, '2013-07-19 11:00:00' UNIOn ALL
SELECT 1, 16, '2013-07-19 12:00:00' UNIOn ALL
SELECT 2, 21, '2013-07-18 10:00:00' UNIOn ALL
SELECT 2, 22, '2013-07-18 11:00:00' UNIOn ALL
SELECT 2, 23, '2013-07-18 12:00:00' UNIOn ALL
SELECT 2, 24, '2013-07-19 10:00:00' UNIOn ALL
SELECT 2, 25, '2013-07-19 11:00:00' UNIOn ALL
SELECT 2, 26, '2013-07-19 12:00:00'
GO
SELECT
t.ID,
MAX(t.VALUE) - ISNULL((SELECT MAX(t2.VALUE) FROM #test t2 WHERe t.ID=t2.ID AND DATEADD(DD, DATEDIFF(DD, 0, t2.[TIME]), 1) = DATEADD(DD, DATEDIFF(DD, 0, t.[TIME]), 0)), 0) AS VALUE_1 ,
DATEADD(DD, DATEDIFF(DD, 0, t.[TIME]), 0) AS [TIME]
FROM
#test t
GROUP BY
t.ID,
DATEADD(DD, DATEDIFF(DD, 0, t.[TIME]), 0);
ID VALUE_1 TIME
----------- ----------- -----------------------
1 13 2013-07-18 00:00:00.000
2 23 2013-07-18 00:00:00.000
1 3 2013-07-19 00:00:00.000
2 3 2013-07-19 00:00:00.000
(4 行受影响)
上面的查询是 查询 “今天的最大值 减去 昨天最大值”
-----
如果是查询 “本月的最大值减去 上一个月的最大值”
将上面那个查询中的 DATEADD(DD, DATEDIFF(DD, 0, t.[TIME]), 0) 修改为 DATEADD(MONTH, DATEDIFF(MONTH, 0, t.[TIME]), 0)
-----
把表1中不同ID同一时间的VALUE_1 全部相加得到新的VALUE_3
SELECt
SUM(VALUE_1) AS VALUE_3,
[TIME]
FROM
表1
GROUP BY
[TIME];
-----
把表2中不同ID同一时间的VALUE_2 相加得到新的VALUE_4
SELECt
SUM(VALUE_2) AS VALUE_4,
[TIME]
FROM
表2
GROUP BY
[TIME];
-----
注: 上面仅仅只有 查询语句, 没有创建表
如果你是要通过查询创建表,那么
SELECt ... INTO 新的表名字 FROM ... WHERe ...
如果你是表已经存在,需要插入数据.
INSERT INTO 新的表名字 SELECt ... FROM ... WHERe ...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯