AS-B
@AS-B

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

データベースのフィールド値を加算して出力したいです。

解決したいこと

SQL Serverに以下のサンプルようにデータが入っています。

code-kazu-basyo
01---1----A
01---2----B
01---3----C
02---4----A
02---5----B
02---6----C
03---7----A
03---8----B
03---9----C

これをbasyoのAとBの合計数をcodeごとにまとめたいです。
01→3
02→9
03→15

該当するソースコード

$server = "XXX";
$database = "XXX";
$user = "XXX";
$password = "XXX";
$conn = odbc_connect("Driver=SQL Server;Server=$server;Database=$database;", $user, $password);

$sql = "SELECT kazu from hokan where basyo in ('A','B') AND code in (
    '01',
    '02',
    '03'
    )";
$sql_rst = odbc_exec($conn, $sql);

while (odbc_fetch_row($sql_rst)) {//以降はテーブルに表示させる処理です。

上記では、
01→1
02→4
03→7
01→2
02→5
03→8
の状況ですので、以下の試みになります。

自分で試したこと

分からないなりにいろいろと書いてみましたが、やはり勉強不足でした。

$sql = "SELECT kazu from hokan GROUP BY code having code in ('01','02','03')";
$sql = "SELECT kazu from hokan GROUP BY code having in ('01','02','03')";
$sql = "SELECT kazu from hokan GROUP BY code in ('01','02','03')";
$sql = "SELECT kazu from hokan where basyo in ('A','B') GROUP BY code in ('01','02','03')";
$sql = "SELECT kazu from hokan where basyo in ('A','B') GROUP BY code and code in ('01','02','03')";
$sql = "SELECT kazu from hokan where basyo in ('A','B')  GROUP BY code and code in ('01','02','03')";
$sql = "SELECT kazu from hokan where basyo in ('A','B') AND GROUP BY code and code in ('01','02','03')";
$sql = "SELECT kazu from hokan where GROUP BY code and code in ('01','02','03')";
$sql = "SELECT kazu from hokan where code in ('01','02','03') GROUP BY code";    
$sql = "SELECT kazu from hokan where basyo in ('A','B') AND code code ('01','02','03')";
$sql = "SELECT kazu , basyo='A' + basyo='B' from hokan where code in ('01','02','03')";
$sql = "SELECT kazu , basyo 'A'+'B' from hokan where code in ('01','02','03')";
$sql = "SELECT kazu , basyo 'A'+'B' from hokan where  AND code in ('01','02','03')";
$sql = "SELECT kazu from hokan where basyo 'A'+'B' AND code in ('01','02','03')";

こういった場合の正しい指定方法をご存知でしたら、恐れ入りますがご教授の程どうぞよろしくお願い申し上げます。

0

1Answer

これでどうでしょうか?

$sql = "SELECT code, SUM(kazu) as sum_kazu FROM hokan WHERE basyo in ('A', 'B') AND code in (
    '01',
    '02',
    '03'
    ) GROUP BY code";
$sql_rst = odbc_exec($conn, $sql);

while (odbc_fetch_row($sql_rst)) {
    $code = odbc_result($sql_rst, 'code');
    $sum_kazu = odbc_result($sql_rst, 'sum_kazu');
    echo "{$code}{$sum_kazu}<br />";
}
1Like

Comments

  1. @AS-B

    Questioner

    ご教授くださり誠にありがとうございます。
    やりたい事が達成できました。
    AS句も初めて使いますし、正直SELECTからFROMまでの間にどんな処理になっているのか分からない状況ですので、これを機に学びたいと思います。
    本当にありがとうございました。

Your answer might help someone💌