我可以在执行sql语句时选择给定行和列的数据吗
为了澄清标题,在where子句的select语句中,我需要使用另一个select来验证我正在对其执行操作的表。在第二个选择中,我必须找到所有的次要ID我可以在执行sql语句时选择给定行和列的数据吗,sql,tsql,Sql,Tsql,为了澄清标题,在where子句的select语句中,我需要使用另一个select来验证我正在对其执行操作的表。在第二个选择中,我必须找到所有的次要ID 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
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
为了澄清代码,evnt\u id
是外键。主键是evnt\u Hstry\u id
。evnt\u hstry\u cd
3表示已删除。我试图做的是通过与所有具有相同evnt\u id
的adt\u trl\u dt\u tm
字段进行比较,查看正在读取的行的字段adt\u trl\u dt\u tm
是否是最新的
我正在进行选择的表是存储事件历史的表。在这里,我们可以说事件何时被添加、修改、删除和/或恢复
遗憾的是,我无法在我的应用程序中这样做,因为此语句正在SSIS中运行
总的来说,我需要将
adt\u trl\u dt\u tm
与另一个adt\u trl\u dt\u tm
具有相同evnt\u id
的
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)
如果代码3是hstry中最新的条目,则将导致行读取;如果最近的行没有代码3,则不会导致行读取
如in=如果完全匹配,则更改谢谢,我认为这成功了,我将不得不进行更深入的测试,但它看起来不错。
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
)