1

人々が退院した場所のリストがあり、年齢別に分類する必要があります。私が現在以下に持っているクエリは機能しますが、すべての放電タイプのカウントをすべての年齢別にリストします。 ここに画像の説明を入力

0-1-2-3 歳の場合、年齢に基づいて退院タイプのすべての個別のカウントがあることがわかります。リストされているのはカウントのみになるようにするにはどうすればよいですかdischargeType(18歳以下である限り)

SELECT DATEDIFF(yyyy, tblVisits.dob, tblVisits.admitdate) AS Age, tblDischarge.dischargeType, COUNT(tblDischarge.dischargeType) AS COUNTS
FROM tblVisits INNER JOIN
               tblDischarge ON tblVisitsDischargeStatus = tblDischarge.dis_statID
GROUP BY DATEDIFF(yyyy,tblVisits.dob, tblVisits.Admitdate), tblDischarge.dischargeType
HAVING (DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate) <=18)
4

4 に答える 4

1

18歳未満の人だけが欲しいが、退院タイプごとに1行だけ...

SELECT
  tblDischarge.dischargeType,
  COUNT(tblDischarge.dischargeType) AS COUNTS
FROM
  tblVisits
INNER JOIN
  tblDischarge
    ON tblVisitsDischargeStatus = tblDischarge.dis_statID
WHERE
  (DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate) <=18) 
GROUP BY
  tblDischarge.dischargeType

年齢を階層にグループ化する場合...

SELECT
  tblDischarge.dischargeType,
  CASE DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate)
     WHEN <=  3 THEN '0..3'
     WHEN <=  8 THEN '4..8'
     WHEN <= 12 THEN '9..12'
                ELSE '13..18'
  END                               AS ageBand,
  COUNT(tblDischarge.dischargeType) AS COUNTS
FROM
  tblVisits
INNER JOIN
  tblDischarge
    ON tblVisitsDischargeStatus = tblDischarge.dis_statID
WHERE
  (DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate) <=18)
GROUP BY
  tblDischarge.dischargeType,
  CASE DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate)
     WHEN <=  3 THEN '0..3'
     WHEN <=  8 THEN '4..8'
     WHEN <= 12 THEN '9..12'
                ELSE '13..18'
  END
于 2012-05-02T13:23:16.970 に答える
1

dischargeTypeあなたの問題はよくわかりませんが、18 歳未満のすべての人を で数えたいだけの場合、コードは次のようになります。

SELECT dis.dischargeType, COUNT(dis.dischargeType) AS COUNTS
FROM tblDischarge dis
JOIN tblVisits    vst ON vst.DischargeStatus = dis.dis_statID
WHERE (DATEDIFF(yyyy,vst.DOB, vst.AdmitDate) <= 18)
GROUP BY dis.dischargeType;

または、次のようなサブクエリを使用できます。

SELECT dischargeType, COUNT(dischargeType) AS COUNTS
FROM tblDischarge
WHERE dis_statID IN (
    SELECT vst.DischargeStatus
    FROM tblVisits vst
    WHERE (DATEDIFF(yyyy, vst.DOB, vst.AdmitDate) <= 18)
)
GROUP BY dis.dischargeType;
于 2012-05-02T13:23:26.483 に答える
1

選択範囲と Group by 部分で AGE を削除します。

SELECT tblDischarge.dischargeType, COUNT(tblDischarge.dischargeType) AS COUNTS
FROM tblVisits INNER JOIN
               tblDischarge ON tblVisitsDischargeStatus = tblDischarge.dis_statID
GROUP BY tblDischarge.dischargeType
HAVING (DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate) <=18)
于 2012-05-02T13:24:04.330 に答える
0

SELECTとから年齢の計算を削除しGROUP BY、 を に変更HAVINGするだけWHEREです。

SELECT tblDischarge.dischargeType,
        COUNT(tblDischarge.dischargeType) as COUNTS
FROM tblVisits 
INNER JOIN tblDischarge
  ON tblVisitsDischargeStatus = tblDischarge.dis_statID
WHERE (DATEDIFF(yyyy,tblVisits.DOB, tblVisits.AdmitDate) <=18) 
GROUP BY tblDischarge.dischargeType
于 2012-05-02T13:22:51.680 に答える