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

Mysqlストアドプロシージャのループ内のステートメントを選択します

    これを試してください:

    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `AbsentReportproc`$$
    
    CREATE DEFINER=`root`@`localhost` PROCEDURE `AbsentReportproc`(IN _fromdate DATETIME, IN _todate DATETIME)
    BEGIN 
        CREATE TEMPORARY TABLE daterange (dte DATE); 
    
        SET @counter := -1;
        WHILE (@counter < DATEDIFF(DATE(_todate), DATE(_fromdate))) DO 
            INSERT daterange VALUES (DATE_ADD(_fromdate, INTERVAL @counter:[email protected] + 1 DAY));
        END WHILE;
    
        SELECT tp.cardno, tp.EMPCODE, tp.DEPARTMENT, GROUP_CONCAT(d.dte) Absentddate, COUNT(tp.cardno) Totalnoofabsentdates
        FROM test_prefixmaster tp JOIN daterange d 
        LEFT JOIN test_prefixtransactions tpt ON tp.cardno = tpt.CARDNO AND DATE(S_DateTime) = d.dte
        WHERE tpt.CARDNO IS NULL 
        GROUP BY tp.cardno;
    
        DROP TABLE daterange;
    END$$
    
    DELIMITER ;
    


    1. SQLiteEXCEPT演算子

    2. SQL Serverで外部キー制約を無効にする方法(T-SQLの例)

    3. 会計アプリケーションの金額にfloatまたはdecimalを使用しますか?

    4. Tap and Park:駐車場アプリのデータモデル