Привет всем, у меня есть какой-то код, над которым я работаю, и то, что мне нужно сделать, я уверен, что это относительно легко, однако я борюсь за утверждение Case
Что мне нужно сделать;
Верните набор данных в таблицу в SSRS, разделите на год, затем месяц использования, затем на уровень выставления счетов
Issue;
Уровни выставления счетов 0,1,4,5
0 - исторические данные, и мне нужно показать это как 1, затем добавить 0 и исходный уровень 1 вместе
Что я сделал до сих пор;
DECLARE @UsageMonth DATE = '20170401'
DECLARE @YEAR INT = '2017'
DECLARE @BillingTier2 INT = 1;
SELECT YEAR(UsageMonth) AS [Year],
UsageMonth,
--Billingtier,
CASE WHEN billingtier = 0 THEN 1 ELSE billingtier END AS BillingTier2,
SuppliesBilled = COUNT(DISTINCT c.CoreMPAN),
CreditKwH = SUM(CASE WHEN c.IsCredit = 1 THEN c.ConsumptionUnits ELSE 0 END),
DebitKwH = SUM(CASE WHEN c.IsCredit = 0 THEN c.ConsumptionUnits ELSE 0 END),
TotalKwh = SUM(c.ConsumptionUnits),
CreditAmount = SUM(CASE WHEN c.IsCredit = 1 THEN c.ConsumptionAmount ELSE 0 END),
DebitAmount = SUM(CASE WHEN c.IsCredit = 0 THEN c.ConsumptionAmount ELSE 0 END),
TotalAmount= SUM(c.ConsumptionAmount),
UnitRate = SUM(c.ConsumptionAmount) / NULLIF(SUM(c.ConsumptionUnits), 0),
StandingCharge = SUM(c.StandingChargeAmount),
CCL = SUM(c.CCLAmount)
FROM dbo.table1 c
WHERE YEAR(UsageMonth) = @YEAR
AND UsageMonth = @UsageMonth
GROUP BY YEAR(UsageMonth), UsageMonth, Billingtier, CASE WHEN billingtier = 0 THEN 1 ELSE billingtier END
Проблема, с которой я столкнулся, заключается в том, что при этом возвращаются оба столбца, которые ранее были 0 как 1, на одной строке, а также другая строка, где уровень выставления счетов равен фактически 1, что дает мне две строки для «1», где должна быть одна строка с обоими уровнями выставления счетов 1 и 0, сложенными вместе
Ожидаемые данные
Year UsageMonth BillingTier2 SuppliesBilled CreditKwH DebitKwH TotalKwh CreditAmount DebitAmount TotalAmount UnitRate StandingCharge CCL
2017 01/04/2017 1 3296 -4348786.008 7219573.706 2870787.699 -523979.1005 866478.4812 342499.3807 0.238118 22394.5114 10685.7546
2017 01/04/2017 4 27 -59415.7663 65843.4963 6427.73 -9269.5841 10359.9353 1090.3512 0.169632 118.5181 21.3836
2017 01/04/2017 5 515 -524035.4192 943647.2675 419611.8483 -105349.1449 189478.524 84129.3791 0.200493 6581.5 1567.7762
Получение данных
Year UsageMonth BillingTier2 SuppliesBilled CreditKwH DebitKwH TotalKwh CreditAmount DebitAmount TotalAmount UnitRate StandingCharge CCL
2017 01/04/2017 1 3124 -4348786.008 7219573.706 2870787.699 -523979.1005 866478.4812 342499.3807 0.119305 22394.5114 10685.7546
2017 01/04/2017 4 27 -59415.7663 65843.4963 6427.73 -9269.5841 10359.9353 1090.3512 0.169632 118.5181 21.3836
2017 01/04/2017 5 515 -524035.4192 943647.2675 419611.8483 -105349.1449 189478.524 84129.3791 0.200493 6581.5 1567.7762
Как видите, все суммы и данные совпадают, за исключением того, что Расходы, выставленные как 0, изначально отсутствовали (172) в операторе Case при подсчете
Любая помощь здесь будет принята с благодарностью
Приветствия