Bendera dengan butiran berbeza dalam SQL
P粉824889650
P粉824889650 2024-02-25 21:48:26
0
1
329

Saya ingin mengatakan bahawa saya masih belajar cara menggunakan SQL, jadi soalan yang saya ajukan mungkin mudah bagi sesetengah daripada anda.

Jadi, katakan saya mempunyai lajur yang dipanggil SAMPLE dan lajur yang dipanggil BATCH. Selain itu, BATCH mengandungi beberapa SAMPLE dan atas sebab tertentu terdapat teg yang dipautkan ke lajur SAMPLE (SAMPLE_FLG).

BATLCH_FLG digunakan untuk menunjukkan bahawa sekurang-kurangnya satu sampel yang terkandung dalam kumpulan ditandakan sebagai 1.

Anda boleh memvisualisasikan senario ini dalam imej contoh ini atau dalam jadual di bawah:

| 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     |

Bagaimana untuk mendapatkan 1 untuk setiap kelompok dalam lajur BATCH_FLG melalui pertanyaan SQL? Apa yang saya maksudkan ialah saya tidak sepatutnya menggunakan 1 beberapa kali walaupun terdapat beberapa sampel setiap kelompok yang dilabelkan 1 (tiga baris terakhir dalam imej contoh).

Kedudukan 1 dalam lajur

BATCH_FLG tidak penting.

Semoga anda boleh membantu saya. Terima kasih. 🎜
P粉824889650
P粉824889650

membalas semua(1)
P粉420958692

Anda boleh menggunakan ROW_NUMBER() untuk menghasilkan hasil yang anda inginkan. Contohnya:

select t.*,
  case when row_number() over(patition by batch order by sample) = 1
       then 1 else 0 end as batch_flg
from t
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan