Sql server 如何减少在SQL中查询此视图的次数?

Sql server 如何减少在SQL中查询此视图的次数?,sql-server,Sql Server,我在下面有一个查询可以运行,但是它访问同一个视图12次 有没有办法减少此视图的使用 SELECT TOP 1 METED_Applications = ( SELECT COUNT(hcc_programtypename) FROM Filteredhcc_project WHERE hcc_programtypename IN ('FE - Met-Ed - Institutional') AND statecode =

我在下面有一个查询可以运行,但是它访问同一个视图12次

有没有办法减少此视图的使用

SELECT TOP 1 METED_Applications = (
        SELECT COUNT(hcc_programtypename)
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Met-Ed - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,METED_MWh = (
        SELECT SUM(hcc_identifiedkwhsavings) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Met-Ed - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,METED_Incentives = (
        SELECT SUM(hcc_identifiedincentivedollars_base) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Met-Ed - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENELEC_Applications = (
        SELECT COUNT(hcc_programtypename)
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penelec - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENELEC_MWh = (
        SELECT SUM(hcc_identifiedkwhsavings) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penelec - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENELEC_Incentives = (
        SELECT SUM(hcc_identifiedincentivedollars_base) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penelec - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENNPOWER_Applications = (
        SELECT COUNT(hcc_programtypename)
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENNPOWER_MWh = (
        SELECT SUM(hcc_identifiedkwhsavings) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,PENNPOWER_Incentives = (
        SELECT SUM(hcc_identifiedincentivedollars_base) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,WESTPENNPOWER_Applications = (
        SELECT COUNT(hcc_programtypename)
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - West Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,WESTPENNPOWER_MWh = (
        SELECT SUM(hcc_identifiedkwhsavings) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - West Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )
    ,WESTPENNPOWER_Incentives = (
        SELECT SUM(hcc_identifiedincentivedollars_base) / 1000
        FROM Filteredhcc_project
        WHERE hcc_programtypename IN ('FE - West Penn Power - Institutional')
            AND statecode = '0'
            AND statuscode <> '801000017'
            AND cr_reservationdate <= '2015-09-02'
        )

您可以通过对基表/视图的一个查询和条件聚合来实现这一点

SELECT A = COUNT(CASE WHEN hcc_programtypename = 'FE - Met-Ed - Institutional' THEN 1 END),
       B = SUM(CASE WHEN hcc_programtypename = 'FE - Met-Ed - Institutional' THEN hcc_identifiedkwhsavings END) / 1000,
       C = SUM(CASE WHEN hcc_programtypename = 'FE - Met-Ed - Institutional' THEN hcc_identifiedincentivedollars_base END) / 1000,
       D = COUNT(CASE WHEN hcc_programtypename = 'FE - Penelec - Institutional' THEN 1 END),
       E = SUM(CASE WHEN hcc_programtypename = 'FE - Penelec - Institutional' THEN hcc_identifiedkwhsavings END) / 1000,
       F = SUM(CASE WHEN hcc_programtypename = 'FE - Penelec - Institutional' THEN hcc_identifiedincentivedollars_base END) / 1000,
       G = COUNT(CASE WHEN hcc_programtypename = 'FE - Penn Power - Institutional' THEN 1 END),
       H = SUM(CASE WHEN hcc_programtypename = 'FE - Penn Power - Institutional' THEN hcc_identifiedkwhsavings END) / 1000,
       I = SUM(CASE WHEN hcc_programtypename = 'FE - Penn Power - Institutional' THEN hcc_identifiedincentivedollars_base END) / 1000,
       J = COUNT(CASE WHEN hcc_programtypename = 'FE - West Penn Power - Institutional' THEN 1 END),
       K = SUM(CASE WHEN hcc_programtypename = 'FE - West Penn Power - Institutional' THEN hcc_identifiedkwhsavings END) / 1000,
       L = SUM(CASE WHEN hcc_programtypename = 'FE - West Penn Power - Institutional' THEN hcc_identifiedincentivedollars_base END) / 1000
FROM   Filteredhcc_project
WHERE  statecode = '0'
    AND statuscode <> '801000017'
    AND cr_reservationdate <= '2015-09-02'
    AND hcc_programtypename IN ( 'FE - Met-Ed - Institutional', 
                                    'FE - Penelec - Institutional', 
                                    'FE - Penn Power - Institutional', 
                                    'FE - West Penn Power - Institutional' )

这里有问题吗?我们只有一个完全难以辨认的查询。因此需要一个非问题标志: