0

我正在做一个检查结直肠癌的项目。我有一些数据要使用 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   

提前致谢

4

3 回答 3

1
SELECT TOP 1 * FROM [YourTable] WHERE [Sentrix_ID] LIKE '<value>%' ORDER BY [Sentrix_ID] DESC

这对你的问题有用吗?

于 2012-08-21T09:18:07.223 回答
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 & 1495455_2) 已重复多次。因此,如果您将 _3 作为表中的一项,则意味着它将提供 _3 数据。

于 2012-08-21T09:57:30.147 回答
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,另一行用于版本后缀。

然后,在第二个新查询中使用这些查询结果,您可以按前缀分组并返回最大值(后缀)。

于 2012-08-21T15:46:28.270 回答