LoginSignup
kansai5963
@kansai5963

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

DB上のデータを集計してCSVに出力したい。

解決したいこと

DBに「日付」「商品名」「金額」のカラムがあり、毎月前月分の商品データの売り上げを集計し、CSVに出力したいと考えております。
ご存じの方がおられましたらご教示願います。

発生している問題・エラー

①DBから前月データの取得
②固定文のCSV出力
①と②を組み合わせる方法がわかりません。※各々個別では問題なく動くことを確認しております。

該当するソースコード

//①前月分のデータ取得

                var wkDate = new Date();
                var wkdate1 = wkDate.setDate(1);
                var kdate3 = dateformat(wkdate1, 'yyyy/mm');

                sql="select 合計金額=SUM(トータル金額) from t_注文データ where 商品名='"+ shouhin +"' and 注文日 like '"+ kdate3 +"%'";
                const result = await mssql.query(sql);

                var total_kingaku = result.recordset[0].合計金額;


//②CSV出力
            console.log('-> test');
            const fs    = require('fs')
            const path  = require('path')
            const iconv = require('iconv-lite')
            const csv   = `果物,色,価格\nりんご,赤,300\nバナナ,黄,100`  // CSVの内容を指定。 ,は列の区切りを示し、\nは改行です
            const dist  = path.join( process.env.PWD || process.cwd() , "書き出されたCSVファイル.csv")   // 書き出すファイルのパス

            // Shift-jisで書き出しする
            fs.writeFileSync( dist , "" )                  // 空のファイルを書き出す
            let fd    = fs.openSync( dist, "w")            // ファイルを書き込み専用モードで開く
            let buf   = iconv.encode( csv , "Shift_JIS" )  // 書き出すデータをShift_JISに変換して、バッファとして書き出す
            fs.write( fd , buf , 0 , buf.length , (err, written, buffer) => {  //  バッファをファイルに書き込む
              if(err){
                  throw err
              }
              else {
                  console.log("ファイルが正常に書き出しされました")
              }
            })

自分で試したこと

javascript node.js CSV出力等の検索を実施しましたが、回答を得られませんでした。

0

3Answer

Comments

  1. @kansai5963

    Questioner
    ご回答いただきありがとうございます。
    拝見させていただきましたが、固定値としてCSV出力を行っているページがほとんどです。
    私がやりたいのは固定値ではなく、DBに登録されているデータを集計してCSVに出力したいのです。

とりあえずデータベースのデータをCSVに吐き出しておいて、それをエクセルなりに読み込ませてからピボットテーブルで集計したほうが今のところは楽かもしれません。

商品データの売り上げを集計

というのはつまりどういう集計でしょうか?

  • 月別全集計?
  • 日別全集計?
  • 日別商品別集計?
0

1 で言う total_kingaku と 2の csv を組み合わせたい.ということでしょうか?

例えば,csv 変数は固定の文字列になっていますが,
文字列結合を行えば,csv に値を追加できると思います.
追加する値に,total_kingaku を使って,
できた csv をファイルに出力すればよいのではないでしょうか?

0

Your answer might help someone💌