我正在研究一项正在检查结肠直肠癌的项目。我有一些数据,我想用Sql查询过滤。问题是某些实验失败了,因此如果第二次或第三次尝试这个实验,有些样本会在另一个指向_2或_3的文件夹中。
我的数据如下:
所以我想检查Sentrix_ID是否存在超过1次,如果这样,查询应该采用最新版本_2或_3等等。是否有任何查询会对我这样做。
还是raw_data:
ID Sample_Name Sample_Code Sample Sentrix_ID NorTum Pool_ID Sample_Group Sentrix_Position Folderdate opmerkingen
1835 99-02872T2 99-02872T2 99-02872 1495455 T2 GS0006564-OPA HNPCC_UV R001_C010 Exp060501 MLH1-UV
1836 97-5332T1 97-5332T1 97-5332 1495455 T1 GS0006564-OPA MUTYH R001_C011 Exp060501 1105delC_G382D
1827 R02-81709N R02-81709N R02-81709 1495455 N GS0006563-OPA HNPCC_UV R001_C002 Exp060501 MSH2
492 t03-32120 N t03-32120 N t03-32120 1495455_2 N GS0006563-OPA TEM_TME_LOH R004_C005 Exp060920
484 t02-27628 N t02-27628 N t02-27628 1495455_2 N GS0006563-OPA TEM_TME_LOH R004_C004 Exp060920
478 t03-06297 B2 t03-06297 B2 t03-06297 1495455_2 B2 GS0006563-OPA TEM_TME_LOH R006_C003 Exp060920
479 t03-06297 B3 t03-06297 B3 t03-06297 1495455_2 B3 GS0006563-OPA TEM_TME_LOH R007_C003 Exp060920
提前致谢
答案 0 :(得分:1)
SELECT TOP 1 * FROM [YourTable] WHERE [Sentrix_ID] LIKE '<value>%' ORDER BY [Sentrix_ID] DESC
这对您的问题有用吗?
答案 1 :(得分:1)
SELECT *
FROM (
SELECT count(Sentrix_ID) AS senId
FROM tableName
GROUP BY Sentrix_ID
) AS m
WHERE senId = 1;
如果Sentrix_ID存在多于1它将提供最新版本,则会产生此查询,但在上述问题中,它将显示空表,因为Sentrix_id(1495455&amp; 1495455_2)重复了一次以上。因此,如果您将_3作为表中的一个条目,则意味着它将提供_3数据。
答案 2 :(得分:1)
所以你想把你的sentrix_id列中的值解析为前缀和后缀?您可以使用instr()函数来标识下划线的位置(如果有),除非您知道前缀的长度始终相同。
尝试类似
的内容select *,
left(sentrix_id,8) as prefix,
iif(len(sentrix_id) = 8 ,"",mid(sentrix_id,10)) as suffix
from table
如果使用等效的sql创建新查询,则应在表中看到另外两行,一行用于ID,另一行用于版本后缀。
然后,在第二个新查询中使用这些查询结果,您可以按前缀分组并返回max(后缀)。