SQL中具有不同粒度的標誌
P粉824889650
P粉824889650 2024-02-25 21:48:26
0
1
346

我想說,我仍在學習如何使用 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 的位置並不重要。

希望你能幫助我。 謝謝。

P粉824889650
P粉824889650

全部回覆(1)
P粉420958692

您可以使用 ROW_NUMBER() 來產生您想要的結果。例如:

select t.*,
  case when row_number() over(patition by batch order by sample) = 1
       then 1 else 0 end as batch_flg
from t
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板