Heim > Fragen und Antworten > Hauptteil
Ich möchte sagen, dass ich immer noch lerne, wie man SQL verwendet, sodass die Fragen, die ich stelle, für einige von Ihnen möglicherweise einfach sind.
Angenommen, ich habe eine Spalte namens SAMPLE und eine Spalte namens BATCH. Darüber hinaus enthält BATCH einige SAMPLE, und aus irgendeinem Grund ist ein Tag mit der SAMPLE-Spalte (SAMPLE_FLG) verknüpft.
BATLCH_FLG wird verwendet, um anzuzeigen, dass mindestens eine in der Charge enthaltene Probe als 1 markiert ist.
Sie können dieses Szenario in diesem Beispielbild oder in der folgenden Tabelle visualisieren:
| 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 |
Wie erhalte ich per SQL-Abfrage eine 1 für jede Charge in der Spalte BATCH_FLG? Was ich meine ist, dass ich 1 nicht mehrmals verwenden sollte, obwohl es mehrere Proben pro Charge gibt, die mit 1 gekennzeichnet sind (letzte drei Zeilen im Beispielbild).
Die Position der 1 in der Spalte
BATCH_FLG ist nicht wichtig.Ich hoffe, Sie können mir helfen. Danke. 🎜
P粉4209586922024-02-26 00:52:28
您可以使用 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