SQL Server
- T-SQL: Order By の使い方
(別のCategoryに載せてしまいましたがみつかりませんので、正しいCategoryで再掲載しています。) T-SQL: Order By の使い方について (初心者です) 下のような順番で結果を求めています。 Item NO QTY P001 10 P002 8 P003 20 N001 13 N002 50 Q001 5 Q002 33 Q003 6 Table内のItemNOはA001から alphabetと3桁番号の順番でY005まであるものとして、上記のP,N,QのItemNoのものだけをこの順番で求めたいのです。 もちろん、WHERE-clauseにはこの8件のItemNOの指定はしてあります。 Order by left(ItemNO, 1) DESC (またはASCE), substring(ItemNo, 2,4) ASC これでは、P,N,Qの順番にはなりません。 最初にP Number、次にN Number、最後にQ Numberを出すにはどうしたらいいのでしょうか。 Order Byの次に8個のItemNOを上記の順番に書いて指定することはできるのでしょうか。 Order Byには "Case When" が使えるとあるinternetで見たのですが、もし使えるとしたらこの順番をだすのに使えるのでしょうか。 ご指導お願いいたします。
- ベストアンサー
- SQL Server
- mspokemon
- 回答数1
- SQLServer2000 で、SQLの書き方
SQLServer2000上のデータ抽出方法について教えて下さい。 例えばデータとして・・・ カラム名: 品番 販売開始日 販売終了日 データ1 : A01 2011/01/01 2011/03/31 データ2 : A02 2011/02/01 2011/05/31 データ3 : A03 2011/04/01 2011/06/30 とします。 今、期間の入力として、 開始日:2011/03/01 終了日:2011/03/31 とした場合、この期間内にあるデータを抽出したいです。 答えは、A01 と A02 が指定期間内にあるので抽出されるSQLを教えて下さい。 (言いかえれば、指定期間内に掛っている情報の抽出です) どなたか、ご教授お願いします。
- ベストアンサー
- SQL Server
- QchanOK
- 回答数2
- SQLサーバ2008でのクエリについて
初心者ですが、よろしくお願いします。 Access 同様のクエリ操作が出来るのでしょうか? 例)グループ化、抽出設定、関数の使用、更新・テーブルクエリ 等
- ベストアンサー
- SQL Server
- kryc
- 回答数2
- SQL2005 クエリ文について
いつもこちらで大変お世話になってます。 SQL2005です。 現在、「商品マスタ」というテーブルに、「単価」という列があり、ここには商品の単価が入っているのですが、「1663.2」 という様に小数点が入っているデータがあります。 これを切り捨てて「1663」という整数にしたいのですが、どの様なクエリ文になるのでしょうか? 先ほど、こちらでご指南頂き、データを1.05倍する、という更新は無事上手くいったのですが、小数点が出てしまいました。 どなたかご教授くださいませ。よろしくお願いします。
- ベストアンサー
- SQL Server
- zenigata711
- 回答数2
- SQL2005 クエリ文について
どなたか教えて下さい。 SQL2005ですが、「商品マスタ」というテーブルに、「単価」という列があるのですが、この「単価」の数値を1.05倍したいです。 300⇒315のように。 どのようなクエリになるのでしょうか? 検索掛けたのですが、同様の質問が見付かりませんでした。よろしくお願いします。
- ベストアンサー
- SQL Server
- zenigata711
- 回答数1
- 複数テーブル表示
こんにちは、 元テーブル⇒取引先テーブル⇒取引先名称テーブル構成から最終的に 結果SQLのように取引先名称1、取引先名称2を 出力したいと思っているのですが、二つを一緒に抽出させることが なかなか出来ません。 多分、複数のSELECT文をどうにかしないといけないのかとは 思うのですが、情報ありましたらお願い致します。 元テーブル ID l 売先コード l 需要家コード 1 l A l B 2 l C l B 3 l A l C 取引先テーブル ID l 売先、需要家コード l 取引先名刺ID 1 l A l A1 2 l B l B1 取引先名称テーブル ID l 取引先名刺ID l 取引先名称 1 l A1 l 売り先名称 2 l B1 l 需要家名称 結果SQL 売先コード l 需要家コード l 取引先名称1 l 取引先名称2 A l B l 売り先名称 l 需要家名称 C l B l (空白) l 需要家名称 A l C l 売り先名称 l (空白)
- ベストアンサー
- SQL Server
- lensent
- 回答数1
- SQL2005ストアド JOINの質問です
INSERTの質問ですが、 2つのテーブル カレンダーマスタ、出勤データがあります。 出勤実績表を作成するのに、出勤していない日も帳票に 出したいので、空白の日付分は埋めれないかと思っています。 1.カレンダー 2011/3/1 2011/3/2 ↓ 2011/3/31 2.出勤データ 社員コード 日付 出勤 退社 0001 2011/3/2 0900 1800 0001 2011/3/4 0900 1900 0002 2011/3/2 0900 1800 0002 2011/3/4 0900 2000 これから、 社員コード 日付 出勤 退勤 0001 2011/3/1 0001 2011/3/2 0900 1800 0001 2011/3/3 0001 2011/3/4 0900 1900 0001 2011/3/5 ↓ 0001 2011/3/31 0002 2011/3/1 0002 2011/3/2 0900 1800 0002 2011/3/3 0002 2011/3/4 0900 2000 ↓ 0002 2011/3/31 出勤データのない日も、カレンダーの日付と、社員コードを 落としたいのですが、LEFT OUTER JOINなどで試してみるのでが うまくいきません。 どなたか、わかる方教えてください。 宜しくお願いします。
- ベストアンサー
- SQL Server
- kirin4247
- 回答数1
- VB2008 SQL ServerのDB名一覧取得
VB2008 で開発をしています。 SQL ServerからDB名の一覧を取得する処理で、うまく行かず悩んでいます。 ロジックは以下の通りです。 Dim cnString As String Dim Scn As ADODB.Connection Dim Srs As ADODB.Recordset Scn = CreateObject("ADODB.Connection") cnString = "Driver={SQL Server};" cnString = cnString & "Server=" & strServerNM & ";" cnString = cnString & "UID=" & strServerUID & "; Pwd=" & strServerPassWD & ";" Scn.Open(cnString) Srs = Scn.Execute("SELECT NAME FROM sysdatabases ORDER BY NAME ;") If Srs.RecordCount = 0 Then MsgBox("データベースが存在しません。") Else Do Until Srs.EOF = True MsgBox(Srs.Fields("Name").ToString) Srs.MoveNext() Loop End If 実行すると、DB名ではなく、"System._ComObject"という文字が複数回(おそらくDBの数)表示されます。 どなたかおわかりになる方、おられましたらよろしくお願い致します。
- ベストアンサー
- SQL Server
- nakusa2012
- 回答数1
- select into句のトランザクションについて
お世話になってます。 sqlについて質問です。 ddlを発行するとトランザクションは暗黙的にコミットされると思いますが、 select into #temptable ・・・ のように、select into 句で一時テーブルを作成した場合、トランザクションはどうなるのでしょうか? また、以下のように一時テーブルと普通のテーブルで挙動は変わりますか? begin transaction select into #temptable from A ← ここでコミットされてしまう? …(1) select into temptable from A ← ここでコミットされてしまう? …(2) rollback transaction 以上、よろしくお願いいたします。
- ベストアンサー
- SQL Server
- sousousore
- 回答数1
- asp sqlのselect文について
asp記載は strSql = "Select * From dbo.テスト(テスト) Where 日付='20110324'" objSr.Open str.Sql,objCon.3 ※上記構文前にConnecting.StringやOPENは定義済みです。また、objSrはレコードセットで定義済みです。 質問内容は、このまま実装すると SQLServerエラー(80040e14) '('付近に不適切な構文があります。 と表示されます。 自分が調べたところ、テーブル名が「dbo.テスト(テスト)」で一部全角カッコがあるるので、 エラーになったのだと思われます。 ちなみに全角カッコではないテーブル名の参照は可能でした。 全角カッコを認識させるにはどうしたらよいでしょうか? [dbo.テスト(テスト)]は試しましたが([ ]で囲む) オブジェクト名dbo.テスト(テスト)が無効ですと表示され、エラーとなりました。 ご教授をお願いいたします。
- ベストアンサー
- SQL Server
- knmrstkt
- 回答数1
- SQLServer2005 実行したクエリ
SQLServer2005にて実行したクエリを取得したいと考えています。 条件としては、実行したクエリとそれを実行したSPIDを取得できればと考えております。 接続が切れた時点で実行したクエリが消えてしまうので、別テーブルを用意して登録しておければ最高です。 理想としては、クエリが実行されたら用意したテーブルに実行したクエリとSPIDを書き込むといったかんじです。 しかし、システムテーブル、システムビューにトリガは付けられないようで困っています。 どなたかわかる方がいらっしゃったらよろしくお願いいたします。
- ベストアンサー
- SQL Server
- blackyuta
- 回答数1
- SQL Server 2008のテーブル名の変更
SQL Server 2008上に作成している大量のテーブル名を変更したいのですがSQL Server Management Studioで1個ずつ変更するには結構大変です。 具体的に良い方法はないでしょうか。SQL Serverについては初心者です。 よろしくご教示願います。
- ベストアンサー
- SQL Server
- fit0320
- 回答数1
- SQLサーバーを外部から接続させた時の安全性
データセンターにてIIS7+SQLServer2008にて会員制サイトを構築しています。 管理者側の機能を開発するのに、ASP.NETでのWEBベースかWinフォームか悩んでいます。 Winフォームの方が得意なので、開発時間の短縮には繋がりますが 直接Winフォームからデータセンター内のSQLサーバーにアクセス出来るようにするのは安全性に欠けるのでしょうか。 この点がわからず、開発に踏み切れずにいます。 どなたかご存知でしょうか。 ご教授よろしくお願いいたします。
- ベストアンサー
- SQL Server
- yujikuramoto
- 回答数1
- コンピュータ名の変更(SQLSERVER)
SQL Server 2008 Workgroup Editonをインストールしている、パソコンのコンピュータ名を 変更しても大丈夫でしょうか?というか変更する必要があります。 ほかの業者が導入したアプリがあり、再導入となると金額や日程がなかなかに調整が難しいです。 従来(2000とか)は、変更の手順があるようですが、2008になって、変更しても普通に SQLが起動していると聞いているのですが、不安で... SQL2008で変更する手順などがわかるサイトなどあれば教えていただけると嬉しいです。 よろしくお願いします。 NEC Mate OS WindowsXP-Pro SP3 SQLはこのパソコンのみで使用
- ベストアンサー
- SQL Server
- OCHISHIN
- 回答数1
- SQLサーバのデータをAccessにリンクする方法
SQLサーバの勉強を始めたばかりの者です。 Accessのテーブルを、SQLサーバに移行したいと考えています。 Acessのサイズアップして SQLサーバにデータを移行することはなんとかできた様子なんですが 今度はそのSQLサーバのデータをAccessにリンクする方法がわかりません。 ネットで検索したのですが Accessのバージョンが違っていたりしてどうもわかりません。 わかりやすく手順など掲載されているサイトがあったら 教えてください! Access:2007 SQL Server:2008 を使用しています。
- ベストアンサー
- SQL Server
- masunona
- 回答数1
- ADOでSeekメッソッドが使えません。
Access 2003 VBA で、ADOを使用してSQL Server 2008 R2 Express のテーブルを参照しています。 Seekメソッドを使いたいのですが、Indexプロパティーを設定すると、 「現在のプロバイダーは Index 機能に必要なインターフェイスをサポートしてません。」 のエラーが発生してしまいます。 SQL Server は初心者です。よろしくお願いいたします。 -以下ソースプログラムです- Dim con As New ADODB.Connection Dim rst As New ADODB.Recordset con.Open "Provider=SQLOLEDB;SERVER=xxxxx;DATABASE=xxxxxx;UID=sa;PWD=xxxxxx;" 'SQL-Serverへ接続 rst.Open "testdata", con, adOpenKeyset, adLockOptimistic, adCmdTableDirect Debug.Print rst.Supports(adSeek), rst.Supports(adIndex) ’----結果、 false false rst.Index = "index1" ' ---- 「現在のプロバイダーは Index 機能に必要なインターフェイスをサポートしてません。」のメッセージ rst.Seek 0, adSeekAfter
- ベストアンサー
- SQL Server
- kazz-voice
- 回答数2
- グループ単位での更新・追加・削除
ID(キー)と、分類コードを持つテーブル(A、B)があるとします。 分類コード単位で更新をしたくて、以下のようなストアドを書きました。 ALTER PROCEDURE XXX @BunruiCD CHAR(10) AS BEGIN DECLARE @TBL_A_ID CHAR(5) DECLARE TBL_A_DATA CURSOR FOR SELECT A.ID FROM TBL_A WHERE BUNRUI_CD = @BunruiCD BEGIN OPEN TBL_A_DATA FETCH NEXT FROM TBL_A_DATA INTO @TBL_A_ID WHILE @@FETCH_STATS = 0 BEGIN IFNOT EXISTS(SELECT * FROM TBL_B WHERE ID = @TBL_A_ID) BEGIN --Bテーブルにデータが存在した場合は削除する DELETE FROM TBL_A WHERE TBL_A_ID = @TBL_A_ID END ELSE BEGIN --特に処理なし(UPDATE等する予定) END END END 以上です。 やりたいこととしては、Aテーブルを分類コード(起動引数)単位でループさせて、 Bテーブルにも同じIDのデータがあったら、Aテーブルから削除させたいです。 しかし、Aテーブルをカーソルループさせているので、それを削除しながら回すと おかしくなるでしょうか。 事情により、1行ずつ読み込んで削除していきたいので、ループさせたいのですが…。 ループのやり方がまずいのか、他の原因があるのか、SQLManagementStudioから 上のSPを実行しても、うまくいきませんでした。 (見よう見まねで作っているので、他にもおかしいところがあると思いますが) 修正すべき点等、ご指摘いただけないでしょうか。
- ベストアンサー
- SQL Server
- ginfix
- 回答数3
- データベースのアタッチができなくなりました
SQLServer2000 logデータを書き込む領域がなくなりましたというエラーメッセージが出ましたので、 logファイルを削除するためにデータベースをデタッチしました。 このときに何かのメッセージが出ましたが、強引にデタッチをしました。 logファイルを削除し、データベースをデタッチしようとしたところ、 「ログファイルとして指定したファイル名が間違っています。新しいログファイルが作成されます。続行しますか?」というメッセージが出ました。 「はい」を選択すると 「エラー 1813 新しいデータベース’データベース名’を開けませんでした。CREATE DATABASEは中断されます。デバイスアクティブ化エラー物理ファイル名’C:\Program Files\Microsoft SQL Server|MSSQL\Data\データベース名_log_LDFは正しくありません。’」 というメッセージが出て、アタッチに失敗してしまいます。 データベースを復元しましたが、logファイルが無いためか、一ヶ月以上前の時点までしか復元できません。 ldfファイルはありません。(ゴミ箱の中にも) mdfファイルは残っていますので何とかなると期待しています。 大変困っています。 どなたか解決方法をご存知でしょうか。 ご教授よろしくお願いいたします
- 締切済み
- SQL Server
- teburon
- 回答数1
- ストアド。存在チェックをしてから登録したい。
SQLServer2005環境です。 同じ構造のテーブルA、Bがあり、AのデータをBにコピーしたいと思っています。 Aのデータは最新のデータ、Bの中にあるのは古いデータなので、もしキーが かぶるレコードがあれば、Updateをかけ、なければInsertをするような仕組みに したいと思っています。 更に可能であれば、Aに存在しないデータがBにあった場合は、Deleteしたいです。 一度BをDeleteしてInsertすれば話が早いのですが、そうもいかず、UpdateとInsertを 交え、小出しに更新するような形にしたいのです。 2008であれば、Merge文という便利なものがあるのですが、2005では上のような 動作をストアドで実現するのは難しいでしょうか。 サンプルコードですとか、解説しているサイトなどがありましたら、教えていただけますと 大変助かります。 宜しくお願いします。
- ベストアンサー
- SQL Server
- ginfix
- 回答数2
- Accessアップサイジング後の入力一時テーブル
MDBよりADPにアップサイジング中。access2007+sqlserver2005にて構築中です。 MDBのときはserver側にテープルすべて移動させリンクにて運用し始めたが、Dataテーブルを直接参照させ開かせると他の処理に影響があるので、入力一時ファイルを作成しておき入力フォームで入力後入力完了ボタンで、更新、追加、削除させDataテーブルに書き込ませていました。 この時server側にこの一時入力テーブルを作ると、レコードが混ざってしまうのでクライアントのMDB 上にこのテープルだけ持たしていました。 ADPにするとこの手法はとれないので(ADPにはテーブル、クエリ等持てない)どのようにすればいいのでしょうか。 くぐったりすると、ローカル一時ファイルを作るようにあるのですが具体的には理解できません。 その入力フォームが出てくるのは、親子リンクで子側のテータテープルとして使用しています(発注フォームの商品明細部分) よろしくお願いします。
- 締切済み
- SQL Server
- plala2010
- 回答数1