我想说,我仍在学习如何使用 SQL,所以我所问的问题对于你们中的一些人来说可能很容易。
因此,假设我有一个名为 SAMPLE 的列和一个名为 BATCH 的列。此外,BATCH 包含一些 SAMPLE,并且由于某种原因,有一个标记链接到 SAMPLE 列 (SAMPLE_FLG)。
BATLCH_FLG 用于显示该批次中包含的至少一个样本被标记为 1。
您可以在此示例图像或下表中可视化此场景:
| sample | batch | sample_flg | batch_flg | |:-----------:|:-----:|:----------:|:---------:| | A111 - 1000 | A11 | 0 | 0 | | A111 - 200 | A11 | 0 | 0 | | A111 - 500 | A11 | 0 | 0 | | B234 - 700 | B234 | 0 | 0 | | B234 - 50 | B234 | 1 | 1 | | B234 - 75 | B234 | 0 | 0 | | C567 - 100 | C567 | 1 | 1 | | C567 - 700 | C567 | 1 | 0 | | C567 - 500 | C567 | 0 | 0 |
如何通过 SQL 查询为 BATCH_FLG 列中的每个批次获取一个 1? 我的意思是,即使每个批次有多个样本被标记为 1(示例图像中的最后三行),我也不应该多次使用 1。
BATCH_FLG 列中 1 的位置并不重要。
希望你能帮助我。 谢谢。
您可以使用
ROW_NUMBER()
来产生您想要的结果。例如: