问题描述
我有以下查询,需要将其转换为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 (将#修改为@)