sql >> データベース >  >> RDS >> Mysql

MySQLケース/If/ Then

    stock > 1000の場合、 次に、別の色のnot green

    SELECT  Beer.Beer, 
            Beer.Brewery, 
            Beer.Style, 
            Beer.ABV, 
            Beer.Hops, 
            Beer.SRM,
            Sum(BeerStock.Quantity) totalQuantity,
            CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
                WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
                WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
                WHEN Sum(BeerStock.Quantity) BETWEEN 5000 AND 9999 THEN 'GREEN'
                WHEN Sum(BeerStock.Quantity) >= 10000 THEN 'Another Color' 
            END
    FROM    Beer
            INNER JOIN BeerStock
                ON Beer.Beer = BeerStock.Beer
    -- Where    ..other conditions..
    

    しかし、あなたが本当にそれを意味するのなら、

    SELECT  Beer.Beer, 
            Beer.Brewery, 
            Beer.Style, 
            Beer.ABV, 
            Beer.Hops, 
            Beer.SRM,
            Sum(BeerStock.Quantity) totalQuantity,
            CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
                WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
                WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
                WHEN Sum(BeerStock.Quantity) >= 5000 THEN 'GREEN'
            END
    FROM    Beer
            INNER JOIN BeerStock
                ON Beer.Beer = BeerStock.Beer
    -- Where    ..other conditions..
    

    もう1つ、GROUP BYも使用する必要があります 句を指定しないと、レコードが異なっていても1つのレコードのみが返されます。

    SELECT  Beer.Beer, 
            Beer.Brewery, 
            Beer.Style, 
            Beer.ABV, 
            Beer.Hops, 
            Beer.SRM,
            Sum(BeerStock.Quantity) totalQuantity,
            CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
                WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
                WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
                WHEN Sum(BeerStock.Quantity) BETWEEN 5000 AND 9999 THEN 'GREEN'
                WHEN Sum(BeerStock.Quantity) >= 10000 THEN 'Another Color' 
            END
    FROM    Beer
            INNER JOIN BeerStock
                ON Beer.Beer = BeerStock.Beer
    -- Where    ..other conditions..
    GROUP   BY Beer.Beer, 
            Beer.Brewery, 
            Beer.Style, 
            Beer.ABV, 
            Beer.Hops, 
            Beer.SRM
    


    1. ORA-01830:入力文字列全体を変換する前に日付形式の画像が終了します/日付クエリの合計を選択してください

    2. MySql-月の名前で並べ替え

    3. SQLでテーブル行の制限を設定する

    4. ifステートメントを使用したSQLクエリ