Rumah  >  Soal Jawab  >  teks badan

Bendera dengan butiran berbeza dalam SQL

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粉824889650P粉824889650236 hari yang lalu277

membalas semua(1)saya akan balas

  • P粉420958692

    P粉4209586922024-02-26 00:52:28

    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

    balas
    0
  • Batalbalas