微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将SQL查询会话转换为视图

如何解决将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 举报,一经查实,本站将立刻删除。