Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih pernyataan di dalam loop dalam Prosedur Tersimpan Mysql

Coba ini:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa struktur database terbaik untuk menyimpan data multibahasa?

  2. MySQL mengubah tabel dan mengonversi data dari teks ke datetime

  3. php:cara mengubah data string menjadi data numerik

  4. Teknik Pure-SQL untuk Baris Penomoran Otomatis di Kumpulan Hasil

  5. Ketik ketidakcocokan:tidak dapat mengonversi dari java.util.Date ke java.sql.Date