我正在尝试将Select feed返回的值返回到另一个sql语句。
CREATE TABLE TempModeData
(
Mode_ID nvarchar(100),
MaxDetectRange nvarchar(100),
MinDetectRange nvarchar(100),
AvgDetectRange nvarchar(100)
);
INSERT INTO TempModeData(Mode_ID)
SELECT DISTINCT mode_id AS Mode_ID FROM detection_report;
结果
Mode_ID MaxDetectRange MinDetectRange AvgDetectRange
44 Null Null Null
63 Null Null Null
我有这个表,现在我想输入这个Select语句的返回
SELECT MAX(rng) AS MaxDetectRange FROM detection_report WHERE mode_id=44;
结果
MaxDetectRange
1234.99
我想要
Mode_ID MaxDetectRange MinDetectRange AvgDetectRange
44 1234.99 Null Null
63 Null Null Null
答案 0 :(得分:4)
我认为以下查询可以帮助您
对于插入记录
INSERT INTO TempModeData(Mode_ID,MaxDetectRange)
SELECT DISTINCT a.mode_id AS Mode_ID,b.MaxDetectRange FROM detection_report a
LEFT OUTER JOIN
(SELECT mode_id , MAX(rng) AS MaxDetectRange FROM detection_report
GROUP BY mode_id) b ON a.mode_id = b.mode_id
用于更新现有记录
UPDATE TempModeData
JOIN (SELECT mode_id , MAX(rng) AS MaxDetectRange FROM detection_report
GROUP BY mode_id) a
ON TempModeData.mode_id = a.mode_id
SET TempModeData.MaxDetectRange = a.MaxDetectRange;
答案 1 :(得分:1)
你也可以计算出Max,Min&平均范围并将其与原始插入一起添加以用于将来的任何记录,如下所示:
CREATE TABLE TempModeData
(
Mode_ID nvarchar(100),
MaxDetectRange nvarchar(100),
MinDetectRange nvarchar(100),
AvgDetectRange nvarchar(100)
);
INSERT INTO TempModeData(Mode_ID,MaxDetectRange,MinDetectRange,AvgDetectRange)
SELECT
mode_id AS Mode_ID
,MAX(rng) AS MaxDetectRange
,MIN(rng) AS MinDetectRange
,AVG(rng) AS AvgDetectRange
FROM detection_report
GROUP BY mode_id;
这样可以避免以后再运行更多UPDATE
语句来添加额外的信息。