How to calculate Day total as well as Monthly Total in the same Row
I need to get day total of Petty Cash (I'm already getting this) & need Monthly total relevant to Account Codes for today. Following I'm showing SQL for daily total. Someone Please help me to Calculate Monthly totals in the same row.
SELECT DPetAcNo as AcNo,
SUM(DPetAmount) as DayTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate=CONVERT(date,'20181113',111)
GROUP BY DPetAcNo
Result for the above query show below
According to the result 2018/11/13 AcNo 009111 Total = 22,995.00
and actual cumulative (2018/11/01 - 2018/11/13) total for 009111 = 136,265.42
sql sql-server tsql
add a comment |
I need to get day total of Petty Cash (I'm already getting this) & need Monthly total relevant to Account Codes for today. Following I'm showing SQL for daily total. Someone Please help me to Calculate Monthly totals in the same row.
SELECT DPetAcNo as AcNo,
SUM(DPetAmount) as DayTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate=CONVERT(date,'20181113',111)
GROUP BY DPetAcNo
Result for the above query show below
According to the result 2018/11/13 AcNo 009111 Total = 22,995.00
and actual cumulative (2018/11/01 - 2018/11/13) total for 009111 = 136,265.42
sql sql-server tsql
add a comment |
I need to get day total of Petty Cash (I'm already getting this) & need Monthly total relevant to Account Codes for today. Following I'm showing SQL for daily total. Someone Please help me to Calculate Monthly totals in the same row.
SELECT DPetAcNo as AcNo,
SUM(DPetAmount) as DayTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate=CONVERT(date,'20181113',111)
GROUP BY DPetAcNo
Result for the above query show below
According to the result 2018/11/13 AcNo 009111 Total = 22,995.00
and actual cumulative (2018/11/01 - 2018/11/13) total for 009111 = 136,265.42
sql sql-server tsql
I need to get day total of Petty Cash (I'm already getting this) & need Monthly total relevant to Account Codes for today. Following I'm showing SQL for daily total. Someone Please help me to Calculate Monthly totals in the same row.
SELECT DPetAcNo as AcNo,
SUM(DPetAmount) as DayTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate=CONVERT(date,'20181113',111)
GROUP BY DPetAcNo
Result for the above query show below
According to the result 2018/11/13 AcNo 009111 Total = 22,995.00
and actual cumulative (2018/11/01 - 2018/11/13) total for 009111 = 136,265.42
sql sql-server tsql
sql sql-server tsql
asked Nov 15 '18 at 6:19
MarkMark
235
235
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
Modified version of regbas’ answer that should perform better because it doesn’t consider so many rows:
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(DPetAmount) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '2018-11-01'
AND DPetDate < '2018-12-01'
AND DPetAcNo IN (select dpetacno from pettydetail WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '2018-11-13')
GROUP BY DPetAcNo
Sqlserver will implicitly convert a ‘yyyy-mm-dd’ string to a date if you want to skip the CONVERT code clutter. Having an index that covers date, comcode, loccode, account and includes amount will also help
——
Another way to approach this is to use the queries you seem to have already written for daytotal and cumtotal, like this:
Select * from
(/*Insert your query that does daytotal into these brackets*/) d
Inner join
(/*Insert your query that does cumtotal into these brackets*/) c
ON d.DPetAcNo = c.dpetacno
add a comment |
I am assuming your DPetDate is a Date or Datetime data type.
You will need to filter the rows for the 1st of the month to the required date.
for both day & month total on the same result, use CASE
in the SUM ()
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal,
SUM(DPetAmount) as MonthTotal,
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '20181101' -- from 1st of Nov
and DPetDate <= '20181113' -- to 13 of Nov
GROUP BY DPetAcNo
EDIT 1:
to only select AccNo based on the required date. Using subquery to get the Month Total. Or alternatively you can do it in a CROSS APPLY
SELECT *,
( SELECT SUM(DPetAmount)
FROM PettyDetail x
WHERE x.DPetAcNo = p.AcNo
AND x.DPetComCode = '15'
AND x.DPetLocCode = '01'
AND x.DPetDate >= '20180101'
AND x.DPetDate <= '20181113') as MonthTotal
FROM
(
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal
FROM PettyDetail p
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '20181113' -- for 13 of Nov only
GROUP BY DPetAcNo
) p
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or aCROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
|
show 2 more comments
Try this
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(case when month(DPetDate)= 11 then DPetAmount else 0 end) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
GROUP BY DPetAcNo
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
add a comment |
How about a self join ?
SELECT
DPetAcNo AcNo
, DayTotal
, SUM(DPetAmount) MonthlyTotal
FROM PettyDetail pd
JOIN (
SELECT
DPetAcNo AcNo
, SUM(DPetAmount) DayTotal
FROM
PettyDetail
WHERE
DPetComCode='15'
AND DPetLocCode='01'
AND DPetDate = CONVERT(DATE,'20181113',111)
GROUP BY DPetAcNo
) pd2 ON pd2.AcNo = dp.DPetAcNo
WHERE
MONTH(DPetDate) = MONTH(CONVERT(DATE,'20181113',111))
AND YEAR(DPetDate) = YEAR(CONVERT(DATE,'20181113',111))
GROUP BY DPetAcNo, DayTotal
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53313520%2fhow-to-calculate-day-total-as-well-as-monthly-total-in-the-same-row%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
Modified version of regbas’ answer that should perform better because it doesn’t consider so many rows:
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(DPetAmount) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '2018-11-01'
AND DPetDate < '2018-12-01'
AND DPetAcNo IN (select dpetacno from pettydetail WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '2018-11-13')
GROUP BY DPetAcNo
Sqlserver will implicitly convert a ‘yyyy-mm-dd’ string to a date if you want to skip the CONVERT code clutter. Having an index that covers date, comcode, loccode, account and includes amount will also help
——
Another way to approach this is to use the queries you seem to have already written for daytotal and cumtotal, like this:
Select * from
(/*Insert your query that does daytotal into these brackets*/) d
Inner join
(/*Insert your query that does cumtotal into these brackets*/) c
ON d.DPetAcNo = c.dpetacno
add a comment |
Modified version of regbas’ answer that should perform better because it doesn’t consider so many rows:
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(DPetAmount) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '2018-11-01'
AND DPetDate < '2018-12-01'
AND DPetAcNo IN (select dpetacno from pettydetail WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '2018-11-13')
GROUP BY DPetAcNo
Sqlserver will implicitly convert a ‘yyyy-mm-dd’ string to a date if you want to skip the CONVERT code clutter. Having an index that covers date, comcode, loccode, account and includes amount will also help
——
Another way to approach this is to use the queries you seem to have already written for daytotal and cumtotal, like this:
Select * from
(/*Insert your query that does daytotal into these brackets*/) d
Inner join
(/*Insert your query that does cumtotal into these brackets*/) c
ON d.DPetAcNo = c.dpetacno
add a comment |
Modified version of regbas’ answer that should perform better because it doesn’t consider so many rows:
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(DPetAmount) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '2018-11-01'
AND DPetDate < '2018-12-01'
AND DPetAcNo IN (select dpetacno from pettydetail WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '2018-11-13')
GROUP BY DPetAcNo
Sqlserver will implicitly convert a ‘yyyy-mm-dd’ string to a date if you want to skip the CONVERT code clutter. Having an index that covers date, comcode, loccode, account and includes amount will also help
——
Another way to approach this is to use the queries you seem to have already written for daytotal and cumtotal, like this:
Select * from
(/*Insert your query that does daytotal into these brackets*/) d
Inner join
(/*Insert your query that does cumtotal into these brackets*/) c
ON d.DPetAcNo = c.dpetacno
Modified version of regbas’ answer that should perform better because it doesn’t consider so many rows:
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(DPetAmount) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '2018-11-01'
AND DPetDate < '2018-12-01'
AND DPetAcNo IN (select dpetacno from pettydetail WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '2018-11-13')
GROUP BY DPetAcNo
Sqlserver will implicitly convert a ‘yyyy-mm-dd’ string to a date if you want to skip the CONVERT code clutter. Having an index that covers date, comcode, loccode, account and includes amount will also help
——
Another way to approach this is to use the queries you seem to have already written for daytotal and cumtotal, like this:
Select * from
(/*Insert your query that does daytotal into these brackets*/) d
Inner join
(/*Insert your query that does cumtotal into these brackets*/) c
ON d.DPetAcNo = c.dpetacno
edited Nov 15 '18 at 6:51
answered Nov 15 '18 at 6:34
Caius JardCaius Jard
12.1k21240
12.1k21240
add a comment |
add a comment |
I am assuming your DPetDate is a Date or Datetime data type.
You will need to filter the rows for the 1st of the month to the required date.
for both day & month total on the same result, use CASE
in the SUM ()
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal,
SUM(DPetAmount) as MonthTotal,
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '20181101' -- from 1st of Nov
and DPetDate <= '20181113' -- to 13 of Nov
GROUP BY DPetAcNo
EDIT 1:
to only select AccNo based on the required date. Using subquery to get the Month Total. Or alternatively you can do it in a CROSS APPLY
SELECT *,
( SELECT SUM(DPetAmount)
FROM PettyDetail x
WHERE x.DPetAcNo = p.AcNo
AND x.DPetComCode = '15'
AND x.DPetLocCode = '01'
AND x.DPetDate >= '20180101'
AND x.DPetDate <= '20181113') as MonthTotal
FROM
(
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal
FROM PettyDetail p
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '20181113' -- for 13 of Nov only
GROUP BY DPetAcNo
) p
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or aCROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
|
show 2 more comments
I am assuming your DPetDate is a Date or Datetime data type.
You will need to filter the rows for the 1st of the month to the required date.
for both day & month total on the same result, use CASE
in the SUM ()
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal,
SUM(DPetAmount) as MonthTotal,
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '20181101' -- from 1st of Nov
and DPetDate <= '20181113' -- to 13 of Nov
GROUP BY DPetAcNo
EDIT 1:
to only select AccNo based on the required date. Using subquery to get the Month Total. Or alternatively you can do it in a CROSS APPLY
SELECT *,
( SELECT SUM(DPetAmount)
FROM PettyDetail x
WHERE x.DPetAcNo = p.AcNo
AND x.DPetComCode = '15'
AND x.DPetLocCode = '01'
AND x.DPetDate >= '20180101'
AND x.DPetDate <= '20181113') as MonthTotal
FROM
(
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal
FROM PettyDetail p
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '20181113' -- for 13 of Nov only
GROUP BY DPetAcNo
) p
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or aCROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
|
show 2 more comments
I am assuming your DPetDate is a Date or Datetime data type.
You will need to filter the rows for the 1st of the month to the required date.
for both day & month total on the same result, use CASE
in the SUM ()
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal,
SUM(DPetAmount) as MonthTotal,
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '20181101' -- from 1st of Nov
and DPetDate <= '20181113' -- to 13 of Nov
GROUP BY DPetAcNo
EDIT 1:
to only select AccNo based on the required date. Using subquery to get the Month Total. Or alternatively you can do it in a CROSS APPLY
SELECT *,
( SELECT SUM(DPetAmount)
FROM PettyDetail x
WHERE x.DPetAcNo = p.AcNo
AND x.DPetComCode = '15'
AND x.DPetLocCode = '01'
AND x.DPetDate >= '20180101'
AND x.DPetDate <= '20181113') as MonthTotal
FROM
(
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal
FROM PettyDetail p
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '20181113' -- for 13 of Nov only
GROUP BY DPetAcNo
) p
I am assuming your DPetDate is a Date or Datetime data type.
You will need to filter the rows for the 1st of the month to the required date.
for both day & month total on the same result, use CASE
in the SUM ()
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal,
SUM(DPetAmount) as MonthTotal,
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate >= '20181101' -- from 1st of Nov
and DPetDate <= '20181113' -- to 13 of Nov
GROUP BY DPetAcNo
EDIT 1:
to only select AccNo based on the required date. Using subquery to get the Month Total. Or alternatively you can do it in a CROSS APPLY
SELECT *,
( SELECT SUM(DPetAmount)
FROM PettyDetail x
WHERE x.DPetAcNo = p.AcNo
AND x.DPetComCode = '15'
AND x.DPetLocCode = '01'
AND x.DPetDate >= '20180101'
AND x.DPetDate <= '20181113') as MonthTotal
FROM
(
SELECT DPetAcNo as AcNo,
SUM(CASE WHEN DPetDate = '20181113' THEN DPetAmount ELSE 0 END) as DayTotal
FROM PettyDetail p
WHERE DPetComCode='15'
and DPetLocCode='01'
and DPetDate = '20181113' -- for 13 of Nov only
GROUP BY DPetAcNo
) p
edited Nov 15 '18 at 6:55
answered Nov 15 '18 at 6:28
SquirrelSquirrel
11.9k22128
11.9k22128
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or aCROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
|
show 2 more comments
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or aCROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
1
1
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
“Great minds think alike.. ..and fools seldom differ!” :)
– Caius Jard
Nov 15 '18 at 6:38
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
Dear Squirrel, Thank you for your reply. Your result shows non today AcNo totals also. I need only today total as well as cumulative total for the relevant AcNo. Not for other AcNos
– Mark
Nov 15 '18 at 6:43
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
edited the answer. See the second query
– Squirrel
Nov 15 '18 at 6:51
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
Euww.. Putting a correlated query in a select block? Never would have expected you to do that!
– Caius Jard
Nov 15 '18 at 6:54
either that or a
CROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
either that or a
CROSS APPLY
– Squirrel
Nov 15 '18 at 6:55
|
show 2 more comments
Try this
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(case when month(DPetDate)= 11 then DPetAmount else 0 end) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
GROUP BY DPetAcNo
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
add a comment |
Try this
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(case when month(DPetDate)= 11 then DPetAmount else 0 end) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
GROUP BY DPetAcNo
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
add a comment |
Try this
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(case when month(DPetDate)= 11 then DPetAmount else 0 end) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
GROUP BY DPetAcNo
Try this
SELECT DPetAcNo as AcNo,
SUM(case when DPetDate=CONVERT(date,'20181113',111) then DPetAmount else 0 end) as DayTotal,
SUM(case when month(DPetDate)= 11 then DPetAmount else 0 end) as MonthTotal
FROM PettyDetail
WHERE DPetComCode='15'
and DPetLocCode='01'
GROUP BY DPetAcNo
answered Nov 15 '18 at 6:23
RegBesRegBes
47129
47129
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
add a comment |
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
Dear RegBes, Yes I got the result. But I need only monthly total relevant to TODAY'S DPetAcNo only. Your solution calculate all table DPetAcNo relevant to the month of November.
– Mark
Nov 15 '18 at 6:31
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
@mark in fairness to regbas, 3 separate professionals all misinterpreted the question in the same way, so it possibly wasn’t a clear requirement.. check the updated answers (mine and squirrel) to address the requirements
– Caius Jard
Nov 15 '18 at 7:09
add a comment |
How about a self join ?
SELECT
DPetAcNo AcNo
, DayTotal
, SUM(DPetAmount) MonthlyTotal
FROM PettyDetail pd
JOIN (
SELECT
DPetAcNo AcNo
, SUM(DPetAmount) DayTotal
FROM
PettyDetail
WHERE
DPetComCode='15'
AND DPetLocCode='01'
AND DPetDate = CONVERT(DATE,'20181113',111)
GROUP BY DPetAcNo
) pd2 ON pd2.AcNo = dp.DPetAcNo
WHERE
MONTH(DPetDate) = MONTH(CONVERT(DATE,'20181113',111))
AND YEAR(DPetDate) = YEAR(CONVERT(DATE,'20181113',111))
GROUP BY DPetAcNo, DayTotal
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
add a comment |
How about a self join ?
SELECT
DPetAcNo AcNo
, DayTotal
, SUM(DPetAmount) MonthlyTotal
FROM PettyDetail pd
JOIN (
SELECT
DPetAcNo AcNo
, SUM(DPetAmount) DayTotal
FROM
PettyDetail
WHERE
DPetComCode='15'
AND DPetLocCode='01'
AND DPetDate = CONVERT(DATE,'20181113',111)
GROUP BY DPetAcNo
) pd2 ON pd2.AcNo = dp.DPetAcNo
WHERE
MONTH(DPetDate) = MONTH(CONVERT(DATE,'20181113',111))
AND YEAR(DPetDate) = YEAR(CONVERT(DATE,'20181113',111))
GROUP BY DPetAcNo, DayTotal
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
add a comment |
How about a self join ?
SELECT
DPetAcNo AcNo
, DayTotal
, SUM(DPetAmount) MonthlyTotal
FROM PettyDetail pd
JOIN (
SELECT
DPetAcNo AcNo
, SUM(DPetAmount) DayTotal
FROM
PettyDetail
WHERE
DPetComCode='15'
AND DPetLocCode='01'
AND DPetDate = CONVERT(DATE,'20181113',111)
GROUP BY DPetAcNo
) pd2 ON pd2.AcNo = dp.DPetAcNo
WHERE
MONTH(DPetDate) = MONTH(CONVERT(DATE,'20181113',111))
AND YEAR(DPetDate) = YEAR(CONVERT(DATE,'20181113',111))
GROUP BY DPetAcNo, DayTotal
How about a self join ?
SELECT
DPetAcNo AcNo
, DayTotal
, SUM(DPetAmount) MonthlyTotal
FROM PettyDetail pd
JOIN (
SELECT
DPetAcNo AcNo
, SUM(DPetAmount) DayTotal
FROM
PettyDetail
WHERE
DPetComCode='15'
AND DPetLocCode='01'
AND DPetDate = CONVERT(DATE,'20181113',111)
GROUP BY DPetAcNo
) pd2 ON pd2.AcNo = dp.DPetAcNo
WHERE
MONTH(DPetDate) = MONTH(CONVERT(DATE,'20181113',111))
AND YEAR(DPetDate) = YEAR(CONVERT(DATE,'20181113',111))
GROUP BY DPetAcNo, DayTotal
edited Nov 15 '18 at 8:39
answered Nov 15 '18 at 7:58
iSR5iSR5
1,563278
1,563278
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
add a comment |
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
Dear iSR5, your solution creates only AcNo and MonthlyTotal only. No DayTotal creates.
– Mark
Nov 15 '18 at 8:34
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
@Mark fixed, check now.
– iSR5
Nov 15 '18 at 8:40
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
Dear iSR5, yes now working
– Mark
Nov 15 '18 at 10:41
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53313520%2fhow-to-calculate-day-total-as-well-as-monthly-total-in-the-same-row%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown