Select rows based on most recent date including unique information
I have found many solutions to selecting the most recent date, however, I have not been able to successfully include all of my columns when I do this because I have data that is unique that I wish to include.
Here is my original query:
select p.scode, u.scode, sq.dsqft0, sq.dtdate
from unit u
join property p on p.hmy = u.hproperty
join sqft sq on sq.hpointer = u.hmy
where p.hmy = 19
This returns:
p.scode u.scode dsqft0 dtdate
-------------------------------------------------------------------
01200100 100 23879 1/1/1980 12:00:00 AM
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
I'd like to receive only the most recent entry for each p.scode and u.scode, however, I don't want to group by sq.dsqft0 - I just want to receive back whatever is in that column for the most recent p.scode/u.scode row.
If I remove the sq.dsqft0 column from my query, I'm able to narrow down to the rows I want, but I need the information in the sq.dsqft0 column. Here is the query that almost works:
select p.scode,u.scode,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode
This returns:
p.scode u.scode currentdate
01200100 100 11/1/2018 12:00:00 AM
01200100 200 1/1/1980 12:00:00 AM
01200100 400 6/1/2015 12:00:00 AM
These are the correct rows, however, if I include sq.dsqft0, I have to include it in the group by statement and it returns additional rows where the sq.dsqft0 column does not match. If I enter this:
select p.scode,u.scode,sq.dsqft0,max(sq.dtdate) as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode,sq.dsqft0
It returns this:
p.scode u.scode dsqft0 dtdate
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
sql
add a comment |
I have found many solutions to selecting the most recent date, however, I have not been able to successfully include all of my columns when I do this because I have data that is unique that I wish to include.
Here is my original query:
select p.scode, u.scode, sq.dsqft0, sq.dtdate
from unit u
join property p on p.hmy = u.hproperty
join sqft sq on sq.hpointer = u.hmy
where p.hmy = 19
This returns:
p.scode u.scode dsqft0 dtdate
-------------------------------------------------------------------
01200100 100 23879 1/1/1980 12:00:00 AM
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
I'd like to receive only the most recent entry for each p.scode and u.scode, however, I don't want to group by sq.dsqft0 - I just want to receive back whatever is in that column for the most recent p.scode/u.scode row.
If I remove the sq.dsqft0 column from my query, I'm able to narrow down to the rows I want, but I need the information in the sq.dsqft0 column. Here is the query that almost works:
select p.scode,u.scode,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode
This returns:
p.scode u.scode currentdate
01200100 100 11/1/2018 12:00:00 AM
01200100 200 1/1/1980 12:00:00 AM
01200100 400 6/1/2015 12:00:00 AM
These are the correct rows, however, if I include sq.dsqft0, I have to include it in the group by statement and it returns additional rows where the sq.dsqft0 column does not match. If I enter this:
select p.scode,u.scode,sq.dsqft0,max(sq.dtdate) as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode,sq.dsqft0
It returns this:
p.scode u.scode dsqft0 dtdate
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
sql
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15
add a comment |
I have found many solutions to selecting the most recent date, however, I have not been able to successfully include all of my columns when I do this because I have data that is unique that I wish to include.
Here is my original query:
select p.scode, u.scode, sq.dsqft0, sq.dtdate
from unit u
join property p on p.hmy = u.hproperty
join sqft sq on sq.hpointer = u.hmy
where p.hmy = 19
This returns:
p.scode u.scode dsqft0 dtdate
-------------------------------------------------------------------
01200100 100 23879 1/1/1980 12:00:00 AM
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
I'd like to receive only the most recent entry for each p.scode and u.scode, however, I don't want to group by sq.dsqft0 - I just want to receive back whatever is in that column for the most recent p.scode/u.scode row.
If I remove the sq.dsqft0 column from my query, I'm able to narrow down to the rows I want, but I need the information in the sq.dsqft0 column. Here is the query that almost works:
select p.scode,u.scode,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode
This returns:
p.scode u.scode currentdate
01200100 100 11/1/2018 12:00:00 AM
01200100 200 1/1/1980 12:00:00 AM
01200100 400 6/1/2015 12:00:00 AM
These are the correct rows, however, if I include sq.dsqft0, I have to include it in the group by statement and it returns additional rows where the sq.dsqft0 column does not match. If I enter this:
select p.scode,u.scode,sq.dsqft0,max(sq.dtdate) as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode,sq.dsqft0
It returns this:
p.scode u.scode dsqft0 dtdate
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
sql
I have found many solutions to selecting the most recent date, however, I have not been able to successfully include all of my columns when I do this because I have data that is unique that I wish to include.
Here is my original query:
select p.scode, u.scode, sq.dsqft0, sq.dtdate
from unit u
join property p on p.hmy = u.hproperty
join sqft sq on sq.hpointer = u.hmy
where p.hmy = 19
This returns:
p.scode u.scode dsqft0 dtdate
-------------------------------------------------------------------
01200100 100 23879 1/1/1980 12:00:00 AM
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
I'd like to receive only the most recent entry for each p.scode and u.scode, however, I don't want to group by sq.dsqft0 - I just want to receive back whatever is in that column for the most recent p.scode/u.scode row.
If I remove the sq.dsqft0 column from my query, I'm able to narrow down to the rows I want, but I need the information in the sq.dsqft0 column. Here is the query that almost works:
select p.scode,u.scode,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode
This returns:
p.scode u.scode currentdate
01200100 100 11/1/2018 12:00:00 AM
01200100 200 1/1/1980 12:00:00 AM
01200100 400 6/1/2015 12:00:00 AM
These are the correct rows, however, if I include sq.dsqft0, I have to include it in the group by statement and it returns additional rows where the sq.dsqft0 column does not match. If I enter this:
select p.scode,u.scode,sq.dsqft0,max(sq.dtdate) as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode,sq.dsqft0
It returns this:
p.scode u.scode dsqft0 dtdate
01200100 100 19000 10/30/2017 12:00:00 AM
01200100 100 23879 11/1/2018 12:00:00 AM
01200100 200 33854 1/1/1980 12:00:00 AM
01200100 400 7056 1/1/1980 12:00:00 AM
01200100 400 12056 6/1/2015 12:00:00 AM
sql
sql
edited Nov 14 '18 at 20:44
marc_s
578k12911161261
578k12911161261
asked Nov 14 '18 at 17:05
nikkiwitsnikkiwits
31
31
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15
add a comment |
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15
add a comment |
1 Answer
1
active
oldest
votes
my suggestion is to use subquery to find the most recent data and then join with original table to get "dsqft0":
select * from
( select p.scode,u.scode as uscode, current_date, dsqft0
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19 ) a
join
(select p.scode,u.scode as uscode ,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode ) sub
on a.scode = sub.scode
and a.uscode = sub.uscode
and a.current_date = sub_current_date
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
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%2f53305385%2fselect-rows-based-on-most-recent-date-including-unique-information%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
my suggestion is to use subquery to find the most recent data and then join with original table to get "dsqft0":
select * from
( select p.scode,u.scode as uscode, current_date, dsqft0
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19 ) a
join
(select p.scode,u.scode as uscode ,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode ) sub
on a.scode = sub.scode
and a.uscode = sub.uscode
and a.current_date = sub_current_date
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
add a comment |
my suggestion is to use subquery to find the most recent data and then join with original table to get "dsqft0":
select * from
( select p.scode,u.scode as uscode, current_date, dsqft0
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19 ) a
join
(select p.scode,u.scode as uscode ,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode ) sub
on a.scode = sub.scode
and a.uscode = sub.uscode
and a.current_date = sub_current_date
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
add a comment |
my suggestion is to use subquery to find the most recent data and then join with original table to get "dsqft0":
select * from
( select p.scode,u.scode as uscode, current_date, dsqft0
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19 ) a
join
(select p.scode,u.scode as uscode ,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode ) sub
on a.scode = sub.scode
and a.uscode = sub.uscode
and a.current_date = sub_current_date
my suggestion is to use subquery to find the most recent data and then join with original table to get "dsqft0":
select * from
( select p.scode,u.scode as uscode, current_date, dsqft0
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19 ) a
join
(select p.scode,u.scode as uscode ,max(sq.dtdate)as currentdate
from unit u
join property p on p.hmy=u.hproperty
join sqft sq on sq.hpointer=u.hmy
where p.hmy=19
group by p.scode,u.scode ) sub
on a.scode = sub.scode
and a.uscode = sub.uscode
and a.current_date = sub_current_date
answered Nov 14 '18 at 17:22
siasia
19214
19214
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
add a comment |
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
Thanks, that solve it!
– nikkiwits
Nov 14 '18 at 17:26
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%2f53305385%2fselect-rows-based-on-most-recent-date-including-unique-information%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
Tag your question with the database you are using.
– Gordon Linoff
Nov 14 '18 at 20:15