Я пытаюсь сделать промежуточные итоги в SQL Server по месяцам за весь год. Хотя код успешно создает промежуточные итоги, для каждого дня каждого месяца возвращается много наблюдений, поскольку таблица данных состоит из миллионов наблюдений, причем многие из них происходят в те же дни.
USE PIERS
SELECT
VDATE,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('LOS ANGELES')
then TEUS end) over (order by VDATE rows unbounded preceding) WC_LA,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('LONG BEACH')
then TEUS end) over (order by VDATE rows unbounded preceding) WC_LB,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('SEATTLE', 'TACOMA')
then TEUS end) over (order by VDATE rows unbounded preceding) WC_NWSA,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('OAKLAND')
then TEUS end) over (order by VDATE rows unbounded preceding) WC_Oakland,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('ABERDEEN WA', 'ANACORTES', 'ANCHORAGE', 'ASTORIA', 'BENICIA', 'COOS BAY', 'DUTCH HBR', 'EL SEGUNDO', 'EVERETT', 'JUNEAU', 'KALAMA', 'KETCHIKAN', 'KODIAK', 'LONGVIEW', 'MARCUS HOOK', 'MONTEREY', 'NEWPORT OR', 'PITTSBURG', 'PORT ANGELES', 'PORT TOWNSEND', 'PORTLAND OR', 'PT HUENEME', 'REDWOOD CY', 'SAN DIEGO', 'SAN FRANCISCO', 'STOCKTON', 'VANCOUVER WA')
then TEUS end) over (order by VDATE rows unbounded preceding) WC_Other,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('NEW YORK')
then TEUS end) over (order by VDATE rows unbounded preceding) EC_NYNJ,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('SAVANNAH')then TEUS end) over (order by VDATE rows unbounded preceding) EC_Savannah,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('NORFOLK') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Norfolk,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('CHARLESTON') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Charleston,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('BALTIMORE') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Baltimore,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('JACKSONVILLE') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Jacksonville,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('MIAMI') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Miami,
SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('PT EVERGLADES') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Everglades
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('PHILADELPHIA') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Philadelphia
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in ('ALBANY', 'BELFAST', 'BOSTON', 'BRIDGEPORT', 'BRUNSWICK', 'CHESTER PA', 'EASTPORT', 'ERIE', 'FALL RVR', 'FERNANDNA BCH', 'FT PIERCE', 'GLOUCESTER CY', 'HOPEWELL', 'MARTINEZ', 'MOREHEAD CY', 'NEW BEDFORD', 'NEW HAVEN', 'NEW LONDON', 'NEWPORT', 'NEWPORT NEWS', 'PAULSBORO', 'PENNSAUKEN', 'PERTH AMBOY', 'PLYMOUTH', 'PORTLAND ME', 'PROVIDENCE', 'PT CANAVERAL', 'RICHMOND VA', 'ROCHESTER', 'SALEM NJ', 'SEARSPORT', 'W PALM BCH', 'WILMINGTON DE', 'WILMINGTON NC') then TEUS end) over (order by VDATE rows unbounded preceding) EC_Other
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('HOUSTON') then TEUS end) over (order by VDATE rows unbounded preceding) GC_Houston
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('NEW ORLEANS') then TEUS end) over (order by VDATE rows unbounded preceding) GC_NO
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('MOBILE') then TEUS end) over (order by VDATE rows unbounded preceding) GC_Mobile
,SUM(case when CONFLAG IN ('1', 'C', 'Y') AND USPORT in('AVONDALE', 'BATON ROUGE', 'BEAUMONT', 'BROWNSVILLE', 'CORPUS CHRSTI', 'DESTREHAN', 'FREEPORT TX', 'GALVESTON', 'GRAMERCY', 'GULFPORT', 'LK CHARLES', 'MANATEE', 'MORGAN CY', 'ORANGE', 'PANAMA CY FL', 'PASCAGOULA', 'PENSACOLA', 'PORT ARTHUR', 'PT LAVACA', 'RICHMOND', 'S LOUISIANA', 'SABINE', 'TAMPA', 'TEXAS CITY') then TEUS end) over (order by VDATE rows unbounded preceding) GC_Other
FROM
dbo.PIERS_IMP_2018
Вывод в настоящее время выглядит следующим образом.
VDATE WC_LA WC_LB WC_NWSA WC_Oakland WC_Other EC_NYNJ EC_Savannah EC_Norfolk EC_Charleston EC_Baltimore EC_Jacksonville EC_Miami EC_Everglades EC_Philadelphia EC_Other GC_Houston GC_NO GC_Mobile GC_Other
2018-01-27 325733.70 312893.15 90954.71 61868.57 9187.17 246965.45 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
2018-01-27 325733.70 312893.15 90954.71 61868.57 9187.17 246965.63 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
2018-01-27 325733.70 312893.15 90954.71 61868.57 9187.17 246965.81 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
2018-01-27 325733.70 312895.15 90954.71 61868.57 9187.17 246965.81 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
2018-01-28 325733.70 312895.15 90954.71 61868.57 9187.17 246965.99 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
...
Как видите, я получаю вывод, состоящий из миллионов записей, каждая из которых добавляет крошечную сумму по сравнению с предыдущей. Вместо этого я хотел бы отображать только совокупные итоги по месяцам. Например, январь суммирует к концу января, а февраль - к концу февраля, т. Д. Это будет выглядеть примерно так.
VDATE WC_LA WC_LB WC_NWSA WC_Oakland WC_Other EC_NYNJ EC_Savannah EC_Norfolk EC_Charleston EC_Baltimore EC_Jacksonville EC_Miami EC_Everglades EC_Philadelphia EC_Other GC_Houston GC_NO GC_Mobile GC_Other
2018-01 325733.70 312895.15 90954.71 61868.57 9187.17 246965.99 142550.78 82106.38 67751.38 38852.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
2018-02 325733.70 312895.15 90974.71 61870.57 9187.17 247038.92 142576.78 82118.88 67751.38 38859.59 18528.73 28260.92 26714.52 20625.43 42341.01 80724.51 7704.58 7376.37 14115.45
...
Не могли бы вы помочь с этим?
Большое спасибо!