0

私は以下のクエリを持っています:

<?php
$BM = $_POST['BranchManager'];
$AverageScore = ("ROUND(AVG(Score),1)AS 'Avg <br/> Score'");
$AverageAutofails = ("ROUND(AVG(Autofails),1)AS 'Autofails <br/> per Check'");
$CA003 = ( "SELECT COUNT(*) FROM Data_Table WHERE CA003Result = 'No'");

echo SQLResultTable("SELECT  BranchManager, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails, $CA003 FROM Data_Table WHERE BranchManager = '$BM'");
?>

ご覧のとおり、質問、スコア、平均などが合計されます。

私がする必要があるのは、質問3(CA003)がNOと答えられた回数を数えることです。これは他の列から独立しています。上記ではネストされたクエリを実行しようとしましたが、何かが機能していません。メインクエリの結果を制限せずに、これをそこに挿入するにはどうすればよいですか?

乾杯!

だから私は今これが機能しています:

$BM = $_POST['BranchManager'];
$AverageScore = ("ROUND(AVG(Score),1)AS 'Avg <br/> Score'");
$AverageAutofails = ("ROUND(AVG(Autofails),1)AS 'Autofails <br/> per Check'");
$CA003 = "(SELECT COUNT(*) FROM Data_Table WHERE CA003Result = 'No' AND BranchManager = '$BM')   AS 'CA003'";
$CA004 = "(SELECT COUNT(*) FROM Data_Table WHERE CA004Result = 'No' AND BranchManager = '$BM')   AS 'CA004'";
$CA006= "(SELECT COUNT(*) FROM Data_Table WHERE CA006Result = 'No' AND BranchManager = '$BM')   AS 'CA006'";
$CA010 = "(SELECT COUNT(*) FROM Data_Table WHERE CA010Result = 'No' AND BranchManager = '$BM')   AS 'CA010'";
$CA017 = "(SELECT COUNT(*) FROM Data_Table WHERE CA017Result = 'No' AND BranchManager = '$BM')   AS 'CA017'";
$CA022 = "(SELECT COUNT(*) FROM Data_Table WHERE CA022Result = 'No' AND BranchManager = '$BM')   AS 'CA022'";
$CA027 = "(SELECT COUNT(*) FROM Data_Table WHERE CA027Result = 'No' AND BranchManager = '$BM')   AS 'CA027'";



echo SQLResultTable("SELECT  BranchManager, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails, $CA003, $CA004, $CA006, $CA010, $CA017, $CA022, $CA027 FROM Data_Table WHERE BranchManager = '$BM'");
?>

チーム(ブランチ)の結果を完全に表示するもの。

現在、次のテーブルのために私は持っています:

echo SQLResultTable("SELECT SalesExec, COUNT(SalesExec)AS 'Total<br/> Checks', $AverageScore, SUM(Autofails) AS 'Total <br/>AutoFails', $AverageAutofails,   FROM Data_Table WHERE BranchManager = '$BM' GROUP BY SalesExec");}

また、各CA00質問のカウントなしを表示する必要があります。

最初のクエリは、BranchManagerフィールドに基づくブランチ合計に対しては正常に機能しますが、2番目のクエリについては、各行に表示されるSalesExecの各CA00質問のNoをカウントする必要があります。

申し訳ありませんが、どう説明したらいいのかわかりません。

4

1 に答える 1

2

サブクエリを回避する必要があり()ます。最終的なクエリは次のようになります...

SELECT
  BranchManager,
  COUNT(SalesExec)                                             AS 'Total Checks',
  ROUND(AVG(Score),1)                                          AS 'Avg Score',
  SUM(Autofails)                                               AS 'Total AutoFails',
  ROUND(AVG(Autofails),1)                                      AS 'Autofails per Check',
  (SELECT COUNT(*) FROM Data_Table WHERE CA003Result = 'No')   AS 'Total No'
FROM
  Data_Table
WHERE
  BranchManager = '$BM'
GROUP BY
  BranchManager


編集:あなたのコメントと編集に基づいて...

結果の最初のセット...

SELECT
  BranchManager,
  COUNT(SalesExec)                                     AS 'Total Checks',
  ROUND(AVG(Score),1)                                  AS 'Avg Score',
  SUM(Autofails)                                       AS 'Total AutoFails',
  ROUND(AVG(Autofails),1)                              AS 'Autofails per Check',
  SUM(CASE WHEN CA001Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA001 No',
  SUM(CASE WHEN CA002Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA002 No',
  SUM(CASE WHEN CA003Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA003 No',
  SUM(CASE WHEN CA004Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA004 No',
  SUM(CASE WHEN CA005Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA005 No',
  SUM(CASE WHEN CA006Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA006 No'
FROM
  Data_Table
WHERE
  BranchManager = '$BM'
GROUP BY
  BranchManager

2番目の結果セット...

SELECT
  SalesExec,
  COUNT(SalesExec)                                     AS 'Total Checks',
  ROUND(AVG(Score),1)                                  AS 'Avg Score',
  SUM(Autofails)                                       AS 'Total AutoFails',
  ROUND(AVG(Autofails),1)                              AS 'Autofails per Check',
  SUM(CASE WHEN CA001Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA001 No',
  SUM(CASE WHEN CA002Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA002 No',
  SUM(CASE WHEN CA003Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA003 No',
  SUM(CASE WHEN CA004Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA004 No',
  SUM(CASE WHEN CA005Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA005 No',
  SUM(CASE WHEN CA006Result = 'No' THEN 1 ELSE 0 END)  AS 'Total CA006 No'
FROM
  Data_Table
WHERE
  BranchManager = '$BM'
GROUP BY
  SalesExec
于 2012-08-08T10:07:03.747 に答える