我有一个Dtltable
tabid TickNUM TickType Amount
001-FGF C2001 Credit 133
001-FGF Tk002 Token 23
001-FGF Tk003 Token 43
无论如何,我可以使用单个TickNum提取所有Tabid数据,因为所有TickNum的Tabid都是相同的。
Select * from Dtltable
where tickNum = 'C2001'
,但仅显示特定的TickNum行。我还需要所有具有类似tabid的行。不确定如何编写逻辑。
答案 0 :(得分:2)
使用JOIN
SELECT d1.*
FROM Dtltable d1
INNER JOIN Dtltable d2 ON d2.tabid = d1.tabid AND d2.TickNUM = 'C2001'
答案 1 :(得分:1)
一种方法是子查询:
select d.*
from dtltable d
where d.tabid = (select d2.tabid from dtltable d2 where d2.tickNum = 'C2001');
如果子查询可以返回多个行,请使用in
而不是=
。
答案 2 :(得分:0)
虽然这有点长,但是可以通过首先选择不同的数据,然后使用内部联接来实现。下面我是怎么做到的。
CReate table #temptab
(
tabid nvarchar(20) null,
ticknum nvarchar(10)null,
ticktype varchar(20)null
)
Create table #temptab1
(
tabid nvarchar(20)null,
ticknum nvarchar(10)null,
ticktype varchar(20)null
)
insert into #temptab1(tabid,ticknum)
select distinct tabid , ticknum from #temptab where ticknum='C2001' // you can pass @param instead of hardcoded value.
//在下面的行中,您将在其中获取数据:
select t.tabid,t.ticknum,t.ticktype from #temptab1 t1 inner join #temptab t on t1.tabid= t.tabid