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

単一のMySqlストアドプロシージャで複数の列でグループ化する

    はい、動的SQLを使用して可能です。 。クエリ文字列を作成し、それを準備して実行できます。これにより、動的な列名を指定できるようになりますが、直接指定することはできません。

    また、もう1つのパラメータを使用して、Group Byで使用する列を指定する必要があります。

    DELIMITER $$
    
    CREATE DEFINER=`root`@`localhost` 
      PROCEDURE `GetChartApprovedData`(in siteValue varchar(45),
                                       in skillValue varchar(100), 
                                       in shiftValue varchar(100), 
                                       in tmValue varchar(45), 
                                       in grpmValue varchar(45), 
                                       in dateValue date, 
                                       in dateValue1 date, 
                                       in groupByColumn varchar(64)) 
    -- add extra in parameter, groupByColumn, to specify which column to group upon 
    
    BEGIN
    
    SET query_str = CONCAT('SELECT 
                              count(agentlogin) AS totalApproved, 
                              shift AS Shift, 
                              skill AS Skill, 
                              tm AS TM, 
                              grpM AS GrpM
                            FROM approved
                            WHERE (sitevalue IS NULL
                                   OR site = sitevalue)
                              AND (skillvalue IS NULL
                                   OR skill = skillvalue)
                              AND (shiftvalue IS NULL
                                   OR shift = shiftvalue)
                              AND (tmValue IS NULL
                                   OR tm = tmValue)
                              AND (grpmValue IS NULL
                                   OR grpM = grpmValue)
                              AND (dateValue IS NULL
                                   OR date BETWEEN dateValue AND dateValue1)
                            GROUP BY ', 
                            groupByColumn); -- concatenate the group by column param
    
    -- prepare the query
    PREPARE stmt FROM query_str;
    
    -- execute the query
    EXECUTE stmt;
    
    -- Clear up
    DEALLOCATE PREPARE stmt;
    
    END $$
    
    DELIMITER ;
    


    1. SQLエラー:キーワード「ユーザー」の近くの構文が正しくありません

    2. カウント付きのSQL連続レコード

    3. WAMPをMySQL5.5にアップグレードしますか?

    4. ユーザー名が存在するかどうかを確認できません