- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:演算の初歩で躓いています)
演算の初歩で躓いています
このQ&Aのポイント
- SQLServer2005+VB.NET2003で開発しています。従来Access2000で作っていたMDBをdboに変換し、それにともなうアプリの書き換えをやっています。
- a,b,cという3列1組のデータが2組あり、aはchar(20)、b,cはint型です。やりたいことは a1,a2・・・・文字列をそのまま a1 & a2 と連結して表示 b1,b2・・・・b1+b2の合計を表示させたい c1,c2・・・・c1+c2の合計を表示させたい
- データアダプタのSQL文で a1&a2 とやると (null)に 同じく b1+b2、c1+c2とやるといずれも(null)になってしまいます。単独で a1,a2,b1,b2,c1,c2それぞれ表示させるとちゃんと表示してくれます。2列のデータをまとめようとするとうまくいきません。文字列の連結は & で、数値の足し算は + で いいはず?ですよね。どこがおかしいのか、あまりにも入り口で躓いていて皆目わかりません。よろしくご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SQL Server で 文字列の連結は '+' だと思いましたが。 MDB だと '&' ですけど。
その他の回答 (2)
- driverII
- ベストアンサー率27% (248/913)
回答No.2
参考になりそうな URL がありましたので追記しておきます。 一例として参考 URL のようにデータを取得して、それから演算します。
- driverII
- ベストアンサー率27% (248/913)
回答No.1
通常、そのような時はまず2行(組)取得して、それからVB の演算で a1 & a2 などと実行します。 SQL 上では列同士の演算はできますが、行同士の演算は制限があります。 質問のような場合、b1 + b2 は SUM(b), c1 + c2 は SUM(c) で求められますが、 a1 & a2 を求めるようなことはできません。
質問者
補足
driverIIさん 早速ありがとうございます。 例の表示がまずかったのですが、このa1~c3までのデータはすべて同じ行にあります。 この6つのフィールド(列)を含むデータを関連するA,B,C3列にまとめてしまいたいと思ったわけです。 データアダプタのSQLでは a1&a2を別名A、b1+b2を別名B、同じくcもCとしています。 その後一つわかったことは、データを変換する際に数値型の列でデータのないセルには本来ゼロが入るところ(null)になっていたので、 それをすべてゼロをいれることにより解決しました。 ただいまだ文字列の演算は???のままです。 引き続きよろしくおねがいいたします。
お礼
たびたびありがとうございます。 >SQL Server で 文字列の連結は '+' そうなんですね。 さきほどやってみて納得しました。 というか、&ではずっとエラーがでて、シングルコートを付けたりいろいろ関係ないことを試していましたが、もっとも基本的なことでした。 この際ついでにコンバートしたデータも欠落している項を修正し、無事動くことが確認できました。 ありがとうございました。