sql >> Databáze >  >> RDS >> Mysql

Porovnejte hodnoty časových razítek a každému z nich přiřaďte hodnotu v případě, že se změnily

Pokud správně rozumím vašemu požadavku, váš week_switch řádek výsledku závisí pouze na vašem produktu, nikoli na jeho časovém razítku.

Takže to spočítejte v dílčím dotazu.

  SELECT product,
         (CASE 
          WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes' 
          ELSE 'no' END)  AS week_switch
    FROM operations
   GROUP BY product

Pak se PŘIPOJTE k tomuto dílčímu dotazu ke svým údajům (fiddle ).

WITH switched AS (
  SELECT product,
         CASE
         WHEN MIN(plan_week) <> MAX(plan_week) THEN 'yes'
         ELSE 'no' END AS week_switch
    FROM operations
   GROUP BY product
)
SELECT
operations.time_stamp,
operations.product,
operations.plan_week,
switched.week_switch
FROM operations
LEFT JOIN switched ON operations.product = switched.product
WHERE time_stamp in ('2020-01-01', '2020-03-15')
GROUP BY 1,2;


  1. Jak se připojit k mssql pomocí pdo přes PHP a Linux?

  2. Aktualizujte hodnotu primárního klíče pomocí entity framework

  3. Použití aliasu sloupce v klauzuli WHERE dotazu MySQL způsobí chybu

  4. Proč používat MySQL přes ploché soubory?