1

select クエリを実行すると、以下のような結果が得られます。

注: EmpId および Absent_dates 列に Group_ConCat() 関数を使用しました。これは、選択クエリで列が他のテーブルから複数の値を返しているためです。

私のクエリ:

SELECT Group_Concat(tp.EMPCODE), tp.DEPARTMENT, Group_Concat(d.dte) Absentddate, COUNT(tp.EMPCODE) Totalnoofabsentdates
FROM test_prefixmaster tp
JOIN daterange30 d
LEFT JOIN test_prefixtransactions tpt ON (tp.EMPCODE = tpt.empcode) AND DATE(S_DateTime) = d.dte
WHERE tpt.empcode IS NULL
GROUP BY tp.EMPCODE;

My Query の実行後、以下の結果が得られます。

 EmpId                 Absent_dates                   Total_no_of_Absent_days
    1101                  2012-12-02                            1
    1102,1102          2012-12-02,2012-12-03                    2
    1104,1104,1104     2012-12-02,2012-12-03,2012-12-04         3

しかし、私の実際の要件は、以下のような結果を表示することです:

EmpId        Absent_dates            Total_no_of_Absent_days
1101          2012-12-02                     1
1102          2012-12-02
1102          2012-12-03                     2
1104          2012-12-02
1104          2012-12-03
1104          2012-12-04                     3

MySQLで使用する必要がある関数は何ですか? ありがとう

4

2 に答える 2

0

これを試して:

SELECT tp.EMPCODE, tp.DEPARTMENT, d.dte, IFNULL(A.Totalnoofabsentdates , '') Totalnoofabsentdates
FROM test_prefixmaster tp 
JOIN daterange d
LEFT JOIN test_prefixtransactions tpt ON (tp.EMPCODE = tpt.empcode) AND DATE(S_DateTime) = d.dte
LEFT JOIN ( SELECT tp.EMPCODE, d.dte Absentddate, COUNT(tp.EMPCODE) Totalnoofabsentdates
            FROM test_prefixmaster tp
            JOIN daterange1 d
            LEFT JOIN test_prefixtransactions tpt ON (tp.EMPCODE = tpt.empcode) AND DATE(S_DateTime) = d.dte
            WHERE tpt.empcode IS NULL
            GROUP BY tp.EMPCODE) AS A ON tp.EMPCODE = A.EMPCODE AND d.dte = A.Absentddate; 
于 2013-01-05T10:29:33.740 に答える
0

これを試して

  SELECT tp.EMPCODE, tp.DEPARTMENT, d.dte Absentddate, COUNT(tp.EMPCODE) Totalnoofabsentdates
   FROM test_prefixmaster tp
   JOIN daterange30 d
  LEFT JOIN test_prefixtransactions tpt ON (tp.EMPCODE = tpt.empcode) AND DATE(S_DateTime) = d.dte
    WHERE tpt.empcode IS NULL
  ORDER BY tp.EMPCODE;
于 2013-01-04T18:43:21.240 に答える