2011-07-01 44 views
0

我有一個返回類似於此行的查詢:篩選出與行匹配子

 
R123 
R234 
R345 
J123 

是否有可能有已匹配子不被返回的行?所以在這種情況下,R123和J123不會顯示在結果中。

+0

定義「相似」。那些具有相同的數字部分和前面的字符的行? – zerkms

+0

從第二個字符位置到最後匹配的行。 R123將作爲收據,J123將成爲日記賬分錄,並且由於它們本質上會取消,所以不應退回。 – Geordan

+0

你怎麼知道J123屬於R123?如果它是日記賬分錄,是不是可以用於其他交易?或者表中有更多的識別信息? –

回答

0

我沒有測試這一點,但它應該給你一個想法..

內加入收據即其中左表的子集(COL,1)=「R」 與期刊(子集left(col,1)='j)表中,您將得到匹配行的列表。

然後只需從表中選擇其不在這個名單

SELECT * FROM [Table] 
WHERE SUBSTRING(col,2,100) NOT IN 
    (SELECT Receipts.Ref FROM 
      (SELECT SUBSTRING(col,2,100) Ref from [Table] WHERE LEFT(col,1) = 'R') Receipts 
INNER JOIN (SELECT SUBSTRING(col,2,100) Ref from [Table] WHERE LEFT(col,1) = 'J') Journals ON Receipts.Ref = Journals.Ref) 
0
select 
    Value 
from MyTable 
group by substring(Value,2,len(Value)) 
having count(*) = 1 
+0

語法不正確 –

0

當然,這個怎麼行?

create table t1 (
t varchar(20) 
) 

go 
insert into t1 (t) values ('R123'),('R234'),('R345'),('J123') 
go 

select Numerals 
from (
    select SUBSTRING(t,1,1) as Prefix, SUBSTRING(t,2,999) as Numerals 
    from t1) a 
group by Numerals 
having COUNT(*) = 1