如何解决将SQL查询会话转换为视图
我有以下查询,需要将其转换为sql Server中的视图。该视图将连接到Excel中的表。我已经阅读了Views,但是所有示例都使用一个简单的SQL查询。有人可以给我一些有关如何将此代码转换为View的指导吗?我们将不胜感激(但不是必需的)一些有关正在发生的事情的注释,这些注释可以帮助我进一步了解“视图”。预先感谢。
--Selecting highest result_value for PCE in a specific quarter
DECLARE @SelectQuarter AS VARCHAR(6);
SET @SelectQuarter = (CAST(year(getdate()) AS char(4)) + 'Q' +
CAST(CEILING(CAST(month(getdate())-4 AS decimal(4,2)) / 3) AS char(1)));
print @SelectQuarter;
WITH
q AS
(
SELECT TOP 100 PERCENT GMP.GMP_Sample_Events.sys_loc_code,GMP.GMP_Sample_Events.sample_date,GMP.GMP_Sample_Events.sample_event,GMP.GMP_Sample_Results.chemical_name,GMP.GMP_Sample_Results.result_value,GMP.GMP_Sample_Results.detect,GMP.GMP_Sample_Results.reporting_limit,GMP.GMP_Sample_Results.dilution,GMP.GMP_Sample_Results.edd_no
FROM GMP.GMP_Sample_Events INNER JOIN
GMP.GMP_Sample_Results ON GMP.GMP_Sample_Events.sys_sample_code =
GMP.GMP_Sample_Results.sys_sample_code
WHERE ((GMP.GMP_Sample_Results.chemical_name = N'Tetrachloroethene') AND
(GMP.GMP_Sample_Events.sample_event = @SelectQuarter))
),SEQUENCED AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY sys_loc_code ORDER BY
chemical_name,sys_loc_code,result_value desc) AS sequence_id,*
FROM q
)
SELECT sys_loc_code,sample_date,sample_event,chemical_name,result_value,detect,reporting_limit,dilution,edd_no
INTO #PCE1
FROM SEQUENCED
WHERE sequence_id = 1
;
--Selecting most recent sample_date for PCE in a specific quarter
SELECT TOP 100 PERCENT GMP.GMP_Sample_Events.sys_loc_code,GMP.GMP_Sample_Results.edd_no
INTO #PCE2
FROM GMP.GMP_Sample_Events INNER JOIN
GMP.GMP_Sample_Results ON GMP.GMP_Sample_Events.sys_sample_code =
GMP.GMP_Sample_Results.sys_sample_code
WHERE (GMP.GMP_Sample_Events.sample_date>= DATEADD(MONTH,-13,CAST(GETDATE() AS DATE)))
AND (GMP.GMP_Sample_Results.chemical_name = N'Tetrachloroethene')
AND (sample_event <> @SelectQuarter OR sample_event IS NULL)
;
--Concatenate the two files together
SELECT x.* INTO #PCE3
FROM
(
SELECT * FROM #PCE1
UNION
SELECT * FROM #PCE2
) x
;
-- Find the most recent date for each sys_loc_code and return its row
WITH
q AS
(
SELECT *
FROM #PCE3
),SEQUENCED AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY sys_loc_code
ORDER BY sys_loc_code,sample_date desc) AS sequence_id,*
FROM q
)
SELECT sys_loc_code,edd_no
INTO #PCE_Final
FROM SEQUENCED
WHERE sequence_id = 1
-- Save into final temp file
SELECT *
FROM #PCE_Final
ORDER BY sys_loc_code
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。