はじめての親子ハイキングに挑戦!! >>

SQLでの抽出方法について

以下のようなデータからデータを編集しようと思っていますが、どのようなコーディングをすれば取り出すことができるのか困っています。ご教示していただけたらと思います。よろしくお願いいたします。

(元データ:Table1)
顧客ID,請求日,個数,金額
10001,20190108,1,108
10002,20190108,2,216
10003,20190107,3,324
10004,20190106,4,432
10005,20190108,5,540

(編集後データ)
顧客ID,内容,個数,金額
10001,2018年12月販売分,1,108
10002,2018年12月販売分,2,216
10003,2018年12月販売分,3,324
10004,2018年12月販売分,4,432
10005,2018年12月販売分,5,540

☆Table1については1顧客につき1件ずつ、前月販売分の請求した内容が入っています。請求日については、当月日付が半角8桁の文字列(YYYYMMDD)で入っています。
☆編集後データでは、請求日−1ヶ月を求めた年月をYYYY年MM月販売分と内容(全角文字)にて抽出します。

A 回答 (2件)

請求日の文字列を日付型に変換するのは TO_DATE 関数


月の減算は ADD_MONTH 関数で -1 を指定
日付型を文字列に変換するのは TO_CHAR 関数
半角の数字を全角に変換するのは多分 TRANSLATE 関数でできるかと
文字列をつなぐ演算子は || です

あとはがんばってください
    • good
    • 1
この回答へのお礼

よろずやkinchan様

ご多忙のところ、いつも回答していただきまして、ありがとうございます。
ほかの回答者様からのご指摘のとおり、丸投げのルール違反である質問を繰り返し、
恥ずかしく思っております。
そのようななか、回答をしていただき、感謝しております。

よろずやkinchan様のご回答や、マニュアルなどを調べた結果、
以下のとおりで動作することができましたので、
お礼と私なりに作成してみた内容を記載させていただきます。
ありがとうございました。

TO_MULTI_BYTE(SUBSTRB(ADD_MONTHS(TO_DATE(Table1.請求日,'yyyymmdd'),-1), 1, 4)) || '年' ||
TO_MULTI_BYTE(LTRIM(SUBSTRB(ADD_MONTHS(TO_DATE(Table1.請求日,'yyyymmdd'),-1), 6, 2), '0')) || '月販売分'

お礼日時:2019/01/10 17:27

これだけわからないのか?全然わからないのかが、わかりません。


全然わからないのなら、基礎から、勉強してくださいな。
ここだけわからないなら、自分が考えたやり方を示し、どこで悩んでいるかを説明すべきかと。
丸投げは、ルール違反です。
    • good
    • 0
この回答へのお礼

puyo3155様

厳しいご指摘、ありがとうございます。

丸投げのルール違反であり、申し訳ありませんでした。
全く分かっていない、本当に私自身大バカ者で情けなく痛感しております。
SQLが苦手なため、困ったらこちらのサイトにて相談させていただいていましたが、
今している仕事自体失格である、正直これからやっていこうという気持ちも下がるほど、
丸投げ質問をしている自分に恥をかき、情けなく思っています。

この度は大変申し訳ございませんでした。

お礼日時:2019/01/10 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Qmysql .txtのファイルを変換? カンマ区切りの test.txtのファイルを データベース化

mysql .txtのファイルを変換?

カンマ区切りの
test.txtのファイルを
データベース化させたい

やり方を教えてください。

今試してること
コマンドプロンプトより
mysql -u -p

create database demo

use demo
までしかできません。
ここから
source test.txt

にしてもうまくいきませんでした泣
パスも変えたりも試みてますが、できません泣

Aベストアンサー

何をやったらどういうエラーが出たのかとか、どういう状況なのかとか、適切に質問しないと的確な回答も得られませぬ。
「MySQL CSV インポート」あたりで検索すればいろいろ見つかると思うけど。

QSQLサーバで和暦から西暦に変換したい

SQLサーバで和暦のデータを西暦に変換する方法を教えていただけないでしょうか。

Webで調べたら、西暦→和暦は多く見受けられたのですが、、
和暦→西暦は見当たらず、、

GYYMMDD→YYYYMMDD に変換したいと考えています。

よろしくお願い致します。

Aベストアンサー

CAST(CAST(SUBSTRING(和暦,2,6) AS INT)
+ CASE SUBSTRING(和暦,1,1)
WHEN 'M' THEN 18670000
WHEN 'T' THEN 19110000
WHEN 'S' THEN 19250000
WHEN 'H' THEN 19880000
ELSE 20180000 END AS VARCHAR(8))

とか

Q大学生って昼はお弁当より学食、外食のが多いですか?

大学生って昼はお弁当より学食、外食のが多いですか?

Aベストアンサー

大学では学食・外食・コンビニ食派が大多数で、手作りお弁当派はかなり少なくなりますね。
やはり、親元を離れて作ってくれる人がいなくなるのが主な理由だと思います。

Q娘の学校から出た暗号解読ですが、全く分かりません。助けてください。

色々とツールを使ってみましたが分かる方がいれば教えてください。
XOR the two following UTF8 strings together:
Yar har, fiddle di dee
and
Being a pirate is all right with me

Take the SHA-1 hash of your answer, to get the flag.

Aベストアンサー

書いてあるとおりやってみた結果は?

1文字目は YとB のUTF8コードをXORした値で、何になるのか
2文字目は、 aとe  のUTF8コードをXORした値で、何になるのか
:

それを示してください。その上で、その先を考えましょう。

Q改行をしたいが、<br>となって出来ない

https://codepen.io/LandonSchropp/pen/xLtif

こちらのscriptの
words = [ "the", "of", "and", …];
に日本語を入れて、なおかつ途中で改行をしたいと思っています。

例 words = [ "ああ\nあああ", "いいいい\nいいい", "うううう\nううう", …];

合間に\nを入れて、replaceで元のコード

$word.text(word);

$word.text(word.replace(/\n/g,"\<br /\>"));

と書いたのですが、ソースでは<br>が

&lt;br&gt;

↓ソース
<h1 style="background-color: hsl(288, 100%, 50%);"><svg xmlns="http://www.w3.org/2000/svg" role="img"><title class="title">Random</title><text class="word" dominant-baseline="central" fill="#222" stroke="#222" stroke-linecap="round" stroke-width="1.5%" text-anchor="middle" x="50%" y="50%">いいいい&lt;br /&gt;いいい</text><text class="word" dominant-baseline="central" fill="white" text-anchor="middle" x="50%" y="50%">いいいい&lt;br /&gt;いいい</text></svg></h1>

と表示され、ブラウザで見ると<br>と表示され、改行はされぬままです。

色々と自分で検索して調べてはいるのですが、知識不足で分かりません。
お分かりになる方、助けて頂けませんでしょうか

https://codepen.io/LandonSchropp/pen/xLtif

こちらのscriptの
words = [ "the", "of", "and", …];
に日本語を入れて、なおかつ途中で改行をしたいと思っています。

例 words = [ "ああ\nあああ", "いいいい\nいいい", "うううう\nううう", …];

合間に\nを入れて、replaceで元のコード

$word.text(word);

$word.text(word.replace(/\n/g,"\<br /\>"));

と書いたのですが、ソースでは<br>が

&lt;br&gt;

↓ソース
<h1 style="background-color: hsl(288, 100%, 50%);"><svg xmlns="...続きを読む

Aベストアンサー

No3です。

少し調べてみたら、もう少し要領の良い書き方ができそうなので・・・
(同じtextタグを2度書かなくても良くなります)
・defタグ内に雛形を定義しておくことで、これを2回参照します。
・改行はtspanで実現します。行送りはdy属性で変更可能
・文字サイズはfont-sizeで指定可能
・・・etcです

(位置の基準は左上基準にしてあります)

<svg width="500" height="500" viewbox="0 0 500 500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

<defs>
<text id="word1" font-size="40px" fill="white" x="0" y="0" >
<tspan x=0 dy="0">ああああああ</tspan>
<tspan x=0 dy="40">いいいいいいい</tspan>
<tspan x=0 dy="40">うううううう</tspan>
</text>
</defs>

<use x="100" y="100" href="#word1" stroke="#222" stroke-width="1.5%" />
<use x="100" y="100" href="#word1" stroke="white" />
</svg>

No3です。

少し調べてみたら、もう少し要領の良い書き方ができそうなので・・・
(同じtextタグを2度書かなくても良くなります)
・defタグ内に雛形を定義しておくことで、これを2回参照します。
・改行はtspanで実現します。行送りはdy属性で変更可能
・文字サイズはfont-sizeで指定可能
・・・etcです

(位置の基準は左上基準にしてあります)

<svg width="500" height="500" viewbox="0 0 500 500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

<defs>
<text id="wor...続きを読む

Q今回の著察権法改正をめぐっては、竹宮惠子さんらの漫画家こ一部からも批判や疑問が出た。ネット上の自由な

今回の著察権法改正をめぐっては、竹宮惠子さんらの漫画家こ一部からも批判や疑問が出た。ネット上の自由な資料利用が創作活動を支え、読者のすそ野も広げて、日本の漫画の強さの源泉になってきたとの指摘だ。多面的に物事を見るこうした姿勢こそが、文化を生み、育てる。ー2月10日朝日新聞社説より

元々の裾野の意味は山の麓という意味ですが、
ここではどのような意味でしょうか?

Aベストアンサー

ネットが使えるのだから、GooにもYahooにもある辞書を利用しない手はない。

大辞林 第三版
すその【裾野】
① 山麓さんろくの広くゆるやかな傾斜面。
② ある物事の周辺部分。 「学問の-を広げる」


岩波国語辞典 第七版
山のふもとが、ゆるやかに広がった野原。
▷比喩的に、物事が広い範囲にわたるさまに言う。「自動車産業は―が広い」


新明解国語辞典第七版
すその【裾野】
火山などのふもとに広がる、ゆるく傾斜した野原。
富士の-
-の広い〔=広い範囲にわたる〕協力関係
文化の-を広げる



デジタル大辞泉はちょっと解釈が違う。
すそ‐の【裾野】
1 山麓の緩やかな傾斜地。
2 上部にあるものを支える基礎になるもの。「科学教育の裾野」

QsqlserverでUPDATEできません

お世話になります。
件名ついてご教授ください。
あるテーブル(以下Aテーブル)上で金額の集計をUPDATE文を実行したのですが、更新されずに困っています。SQL文が誤っているのかと思いましたが別テーブル(以下Bテーブル)で試したところ問題なく更新されました。
金額は両方とも整数型(int)で定義しているため差異はない認識です。
データ数はA…10万件超、B…10件前後となっています。
何が原因かわからず困っています。

Aベストアンサー

http://www.remember-the-time.xyz/2013/08/sql-server-update-delete.html
これじゃないですか?

SUM() over 〜 といったウインドウ関数は、元の行をまとめたりしません。
この例では、 キー,年月 が同じ行が複数あれば、その行数だけ同じ行が存在します。
それを結合させれば、 テーブルの1行に対して、Aの複数行で更新しようとしてエラーになります。

テーブル
001 201804 10,000 5,000 10,000 5,000
001 201804 20,000 6,000 10,000 5,000
だったら
A
001 201804 30,000 11,000
001 201804 30,000 11,000
になって、
テーブル1行目 + A1行目
テーブル1行目 + A2行目
テーブル2行目 + A1行目
テーブル2行目 + A2行目


この場合だったら、ウィンドウ関数ではなく、集約関数(GROUP BYでまとめる)のSUMを使えばいいのでは。



個人としては、テーブルの設計からやりなおしだと思います。

http://www.remember-the-time.xyz/2013/08/sql-server-update-delete.html
これじゃないですか?

SUM() over 〜 といったウインドウ関数は、元の行をまとめたりしません。
この例では、 キー,年月 が同じ行が複数あれば、その行数だけ同じ行が存在します。
それを結合させれば、 テーブルの1行に対して、Aの複数行で更新しようとしてエラーになります。

テーブル
001 201804 10,000 5,000 10,000 5,000
001 201804 20,000 6,000 10,000 5,000
だったら
A
001 201804 30,000 11,000
001 201804 30,000 11,000
に...続きを読む

Qπがついた整数と普通の整数ってたすことってできますか? 【例】2π+4など・・・

πがついた整数と普通の整数ってたすことってできますか?
【例】2π+4など・・・

Aベストアンサー

πと普通の整数を足すことはできません。

π同士なら計算できます。

【例】
2π+4π=6π

QSQLサーバでのコード変換(コード値のデータの変換)について

閲覧ありがとうございます。

SQLサーバで管理しているコード値を新しい管理コードに変換したいと考えています。
その際にREPLACEコマンドを使用して、コードの変換を実施する予定なのですが、
他に考えられる方法はございますでしょうか?
※変換が必要なコード値は、20~30種類あり、出来るだけ時間を要しない変換方法が好まれます

【イメージ】
・現状  →  ・予定
001:男     100:男
002:女     200:女 
003:その他   300:その他

以上、ご回答頂ければ幸いです。

Aベストアンサー

UPDATE テーブル
SET 項目 = CASE 項目 WHEN '001' THEN '100'
WHEN '002' THEN '200' ELSE '300' END

QSQL Server 縦方向のデータを列方向に変換したい

実際にこういうデータが欲しいわけではなくて例として挙げています。

私が都道府県を訪れた回数が一定期間ごと(月単位等)にデータベースに格納されています。

期間 都道府県 回数
1  東京   12
1  大阪   4
1  福岡   5
2  東京   11
2  大阪   10

上記のデータを
期間 東京 大阪 福岡
1  12  4  5
2  11  10

のように一部データを列方向に変換したいのです。
例では都道府県としていますが、実際には都道府県に該当する列には上限がありません。

Microsoft SQL Serverでどのように記述すればいいか分かりません。。

Aベストアンサー

それはSQL ServerというDBMSの中で実施することではなく、そういうデータ表現が必要なプレゼンテーション層となるソフトウェアの責任でそういう見え方に加工すべきではないでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング