开发者

Can I select the data of a given row and column while executing a sql statement

开发者 https://www.devze.com 2023-03-21 21:13 出处:网络
To clarify the title, in a select statement, in the where clause, I need to verify to table on which I am doing using another select. In that second select, I have to find all the secondary ID. Here i

To clarify the title, in a select statement, in the where clause, I need to verify to table on which I am doing using another select. In that second select, I have to find all the secondary ID. Here is what I have worked out so far

Declare @id INT

--inserting values in temp table
SELECT
   rn = ROW_NUMBER() OVER (ORDER BY adt_trl_dt_tm),
   *
INTO #Temp
FROM dbo.EVNT_HSTRY
ORDER BY adt_trl_dt_tm DESC 

--Searching for items that are deleted and have not been restored
SELECT *
FROM dbo.EVNT_HSTRY hstry
WHERE evnt_hstry_cd LIKE '3' and
adt_trl_dt_tm   > (SELECT adt_trl_dt_tm FROM dbo.EVNT_HSTRY WHERE evnt_id = evnt_id

DROP TABLE #Temp

To clarify the code, evnt_id is a foreign key. The primary key is evnt_Hstry_id. The evnt_hstry_cd 3 means deleted. What I am trying to do is to see if the field adt_trl_dt_tm (lastest date modified) of the row being read is the latest by comparing it with all the adt_trl_dt_tm开发者_开发百科 fields that have the same evnt_id.

The table I am doing the select on is the table where we store the history of the events. It is where we say when the event has been added, modified, deleted and or restored.

Sadly, I cannot do that into my application as this statement is being run in an SSIS.

Overall, I need to compare the adt_trl_dt_tm with the other adt_trl_dt_tm that have the same evnt_id and select the latest.


Can you test this with your data ?

SELECT *
FROM dbo.EVNT_HSTRY hstry
WHERE evnt_hstry_cd LIKE '3' and
not exists (select 1 from EVNT_HSTRY WHERE hstry.evnt_id = evnt_id
AND Hstry.adt_trl_dt_tm > adt_trl_dt_tm)


SELECT *
FROM dbo.EVNT_HSTRY hstry
WHERE evnt_hstry_cd = '3' and
adt_trl_dt_tm   = (
                    SELECT max(adt_trl_dt_tm) FROM dbo.EVNT_HSTRY WHERE evnt_id = hstry.evnt_id
              ) 

will result in a row read if the code 3 is the most recent entry in hstry and no row if there is a more recent row not having code 3

Change LIKE in = if it matches exactly

0

精彩评论

暂无评论...
验证码 换一张
取 消