SQL Server
- 質問
SQL server2008 R2で作成したデータベースをSQL server2005で使用したいと考えてます。事情があり、SQL server2005にはSSISがインストールされておらず、追加する事も出来ません このためデータベースのアタッチか、リストアにより、上位バージョンである SQL server2008 R2で作成されたデータベースを、会バージョンである SQL server2005で使用したいのですが エラーとなってしまいます。 もし何らかの方法でダウングレードできるようであれば 方法を教えてください
- ベストアンサー
- SQL Server
- noname#141015
- 回答数1
- sql文のwhere句について
<環境>sqlserver SQLでパラメータが空白であれば全件取得、パラメータに値が設定されている場合には 条件にHITするデータを抽出したいのですが、一本のクエリで抽出することができるのでしょうか? 空白時パラメータは以下のとおり入ってきます。 @no="" …完全一致 @name="%%" …部分一致 例) SELECT * FROM テーブル WHERE (NO = @no) and ((@name IS NULL) OR (@name IS NOT NULL) AND (NAME LIKE @name)) NAMEは上記クエリにて取得できています。 NOのところはどのようにすればよいでしょうか?
- ベストアンサー
- SQL Server
- noname#208236
- 回答数4
- SQL文を教えてください
SQLserver2005環境です。 テーブルA (年月とIDでユニーク) 年月 ID 体重 --------------------------- 2011年01月 1 50 2011年02月 1 51 2011年02月 2 40 2010年12月 3 59 2011年01月 3 60 2011年02月 3 61 2011年01月 4 70 のようになっていた場合、年月を2011年02月で抽出をかけた際に 今月体重を2011年02月、前月体重を2010年01月とし 年月 ID 今月体重 前月体重 --------------------------------------------- 2011年02月 1 51 50 2011年02月 2 40 Null 2011年02月 3 61 60 ↑の様な結果を得られるSQLを書きたいのですが、うまく作れず困っています。 ご教授いただけないでしょうか? よろしくお願いします。
- ベストアンサー
- SQL Server
- BAISYS
- 回答数2
- SQLServer2000-トランザクションログ
SQLServer2000を使用しています。 復旧モデルをシンプルで運用しているのですが、トランザクションログが 数G程度まで肥大化していまいます。 シンプルにも関わらずトランザクションログがここまで肥大化してしまう 原因がわからず、困っております。 原因や対処法をご教授けないでしょうか。 宜しくお願いします。
- 締切済み
- SQL Server
- akizaburou
- 回答数1
- ストアドプロシージャのエラーメッセージ取得
現在、職場で2008R2の環境でSPを書いているのですが、エラーメッセージの取得方法がわかりません。 「@@error」でエラー番号は取得できますが、同じような感じでメッセージは取得できないでしょうか? error_messageが使えれば楽なのですが、開発ルール上TRY~CATCHが使えないので・・・。 どなたか、ご教授願います。
- ベストアンサー
- SQL Server
- kyama4832
- 回答数2
- VB2005とSQLServer2005の開発
いつもご参考にさせて頂いております。 今回VB2005ProfessionalとSQLServer 2005Developer Editionでシステムを開発しようと考えております。PCはWin7Pro64bitです。 VB2005は少し経験があるのですが、SQL Serverを使用するのが初めてです。 以前はSQLServerの代わりにAccessをデータベースとして使用していました。 そこでご質問です。 SQLServerもAccessと同様にOracle10gと接続し、 出来たデータベースをサーバー又は端末にセットし、 数人が使用できるシステムを構築することは可能でしょうか? 実際プログラムを使用するPCはVista32bit or Win7 32bitです。 ※システムはデータの取込、出力、新規作成、更新、削除等一通りの動作をします。 又、この様な構築に関して詳しく解説している本など参考(勉強)になるものがございましたら、是非教えてください。 SQLServerに関して素人なので、どなたかご教授宜しくお願い致します。
- ベストアンサー
- SQL Server
- michaelme
- 回答数1
- SQLServerで2つの項目からデータを検索。
SQL Server(バージョン不明)について、2つのフィールドからデータを検索したいのですが、できません。 1つのフィールドならできるのですが、どのような構文にすればいいのでしょうか? 自分が実際に、SQL Serverを使う事ができず、現在どのような構文になっているか、バージョンは何か、申し訳ないのですがわかりません。 ご回答の程、どうぞよろしくお願い致します。
- ベストアンサー
- SQL Server
- nene99
- 回答数1
- テーブルの結合について
テーブル結合に関するSQL文について質問させてもらいます。 DBはSQLServer2005です。 下記のような二つのテーブルがあります。 テーブルA コード A111 A111B A222 A333 テーブルB コード 数量 A111 1 A111B 2 A222 3 A222B 4 上記2つのテーブルから下記の結果を表示させたいのです。 コード 数量 A111 1 A111B 2 A222 7 A333 0 テーブルBのコードがテーブルAにある場合、そのまま数量を表示。 ない場合、コードの4桁目まででサマリした合計値を表示させたい。 LEFT JOIN等をいろいろためしてみたのですがうまくいきません。 おわかりの方、方教えてください。
- ベストアンサー
- SQL Server
- cocoa_wk
- 回答数2
- (再度SQLのご指導を願います)
先日にこちらの掲示板でご親切な方からアドバイスをいただき 試した結果、以下の通り若干の不具合が発生し、再度ご質問する次第です。 恐縮ながら以下にご教授いただければ幸いです。 テーブルは以下で仮定します。 ・注文テーブル 購入日 レジコード 顧客コード 顧客種別 商品NO購入金額 購入個数 年代 2011/01/01 111111 123456 通常 100 ¥100 1 20代 2011/01/02 111112 129999 通常 100 ¥300 3 50代 2011/01/02 111112 129999 通常 200 ¥200 1 50代 2011/01/02 111112 129999 通常 500 ¥500 2 50代 2011/02/01 111113 122222 新規 100 ¥100 1 90代 2011/02/05 111114 133333 新規 400 ¥400 1 10代 2011/02/11 111115 144444 通常 1000 ¥1,000 1 30代 2011/02/11 111115 144444 通常 100 ¥100 1 30代 2011/03/01 111116 155555 新規 100 ¥300 3 20代 2011/03/01 111116 155555 新規 200 ¥400 2 20代 2011/03/05 111117 166666 通常 500 ¥250 1 30代 2011/03/15 111118 177777 通常 400 ¥800 2 40代 2011/03/16 111119 188888 通常 100 ¥100 1 50代 2011/03/16 120000 123456 通常 100 ¥1,000 10 20代 2011/03/16 120000 123456 通常 400 ¥400 1 20代 2011/03/16 120000 123456 通常 200 ¥400 2 20代 2011/03/30 121000 144444 通常 100 ¥300 3 30代 2011/03/30 121000 144444 通常 1000 ¥3,000 3 30代 2011/03/30 121000 144444 通常 500 ¥750 3 30代 ・割引テーブル 商品NO 商品名開始日終了日 100 ごはん 2011/03/01 2011/03/30 100 ごはん 2011/01/01 2011/01/31 抽出したい内容 (1)注文テーブルにある購入日で日付を指定の上、(betweenで2010/06/01-2011/05/31までなど) 商品NOを特定の1品目、もしくは複数選択をした上で、その商品に対する期間内の購入数・購入金額を求めたい。 ただし、"割引テーブル"に差し掛かる期間のみ、別の列で分けて表示させたい。 (つまり割引期間と通常期間を列で分けることで売上の差を見極めたいのです。) これを以下の構文で試してみました。 SELECT t.購入日, t.商品NO, Sum(iif(t.購入日<w.開始日 or t.購入日>w.終了日,t.購入個数,0)) AS 通常購入, Sum(Switch(t.購入日<w.開始日 Or t.購入日>w.終了日,0,True,t.購入個数)) AS 割引購入, Sum(Switch(t.購入日<w.開始日 Or t.購入日>w.終了日,t.購入金額,True,0)) AS 通常購入金額, Sum(Switch(t.購入日<w.開始日 Or t.購入日>w.終了日,0,True,t.購入金額)) AS 割引購入金額 FROM 注文テーブル AS t INNER JOIN 割引テーブル AS w ON t.商品NO = w.商品NO WHERE (((t.商品NO)=100) AND ((t.購入日) Between #1/1/2011# And #3/30/2011#)) GROUP BY t.購入日, t.商品NO; 実行結果 購入日 商品NO 通常購入 割引購入 通常購入金額 割引購入金額 2011/01/01 100 1 1 ¥100 ¥100 2011/01/02 100 3 3 ¥300 ¥300 2011/02/01 100 2 0 ¥200 ¥0 2011/02/11 100 2 0 ¥200 ¥0 2011/03/01 100 3 3 ¥300 ¥300 2011/03/16 100 11 11 ¥1,100 ¥1,100 2011/03/30 100 3 3 ¥300 ¥300 上記のようになりました。 上記の割引テーブルで仮定すると、1月と3月の売り上げは”割引購入"と"割引購入金額"に記載され、2月の分は"通常購入"と"通常購入数"にその時の売り上げを出したいと考えております。 現在の結果の場合、割引テーブルで設定された割引期間内の"通常購入"と"通常購入数"にも数字が入ってしまっています、、。 理想の抽出結果は以下の通りです。 購入日 商品NO 通常購入 割引購入 通常購入金額 割引購入金額 2011/01/01 100 0 1 ¥0 ¥100 2011/01/02 100 0 3 ¥0 ¥300 2011/02/01 100 2 0 ¥200 ¥0 2011/02/11 100 2 0 ¥200 ¥0 2011/03/01 100 0 3 ¥0 ¥300 2011/03/16 100 0 11 ¥0 ¥1,100 2011/03/30 100 0 3 ¥0 ¥300 (2)注文テーブルにある購入日で日付を指定の上、(上記(1)と同様)商品NOを特定の1品目、もしくは複数選択をした上で、年代別で顧客種別ごとの客数を知りたい場合 ※上の客数は顧客種別かレジコードをカウントすれば良いと思いますが、一人のお客様が一回の会計で5品目買ったらレコードは5つになるため、重複を防ぐ必要があります。(対象の品物を何回購入したことがあるか表示したいので、、) また、"顧客種別"は通常・新規・フリーの三種類の言葉で分類分けされて登録されてますが、通常のみ、設定した抽出対象期間前にも1回でも購入があれば"リピート"としてカウント、過去に購入なく抽出対象期間内で初めて購入があった場合は"初めて"にカウントしたいです。 これを以下構文で試してみました。 SELECT t.商品NO , t.年代 , sum(switch(t.顧客種別='通常' and k.顧客コード is not null, 1 , true ,0)) as リピート , sum(switch(t.顧客種別='通常' and k.顧客コード is not null, 0 , true ,1)) as 初めて , sum(switch(t.顧客種別='新規' , 1 , true ,0)) as 新規 , sum(switch(t.顧客種別='フリー', 1 , true ,0)) as フリー FROM 注文テーブル t LEFT JOIN (SELECT 顧客コード FROM 注文テーブル WHERE 購入日<#2011/02/28#) k ON t.顧客コード = k.顧客コード WHERE t.購入日 between #2011/03/01# and #2011/03/31# and t.商品NO = 100 GROUP BY t.商品NO, t.年代 抽出結果 商品NO 年代 リピート 初めて 新規 フリー 100 20代 1 1 1 0 100 30代 2 0 0 0 100 50代 0 1 0 0 たとえば、3月1日~3月31日までの期間で抽出をすると 商品NO100の商品を買った30代のリピートの方は1名(顧客NO144444)だけに なると思いますが、抽出結果では2名になってしまいます。 ・対象の商品"100"を設定した対象期間内(上記の構文でいうと2011/03/01-2011/03/31) でしか購入がなかった場合は"初めて"としてカウント ・対象の商品"100"を設定した対象期間内(上記の構文でいうと2011/03/01-2011/03/31) で購入があり、且つその設定日付以前にも同じ商品の購入があった場合は"リピート"として カウント(設定日以前に同じリピート客が同じ商品を100回買ったとしても、100カウントではなく1カウント)リピートのお客様が"何回買ったか?"ではなく、"リピートしてる人が何人いるか?"を表したいのです。 これがが出来ないか頑張っています、、。 一番上のテーブルを仮定して理想の抽出結果は 商品NO 年代 リピート 初めて 新規 フリー 100 20代 1 0 1 0 100 30代 1 0 0 0 100 50代 0 1 0 0 お手数をおかけしますが、なにとぞご教授をお願いいたします。
- ベストアンサー
- SQL Server
- papapapandatyun
- 回答数3
- SQLServerでtime型への変換
SQLServer2008R2 Expressを始めて使っています。 Microsoft SQL Server Management Studioで接続してビューを作成。 SQLクエリでdatetimeのデータとtime型の引き算をして、時間の計算結果を返してもらおうとしています。 テーブル名 test_table col1 = datetime型 col2 = time型 SELECT (CAST(col1 AS time(7)) - col2) FROM test_table; 正しいか正しくないかはまだちょっとわからないのですが、上のようなSQLを実行したいのです。 しかし、 SELECT CAST('2011-01-01 01:00:00' AS time(7)) AS test; というテストを行う段階で「timeメソッドを呼び出せません」とエラーが返ってきます。 書いてるものが違うのか、何か設定そのものが違うのでしょうか。 以下を参考にしました。 http://msdn.microsoft.com/ja-jp/library/bb677243.aspx 凄い初歩的な問題の気がするのですが、何処を調べればいいのかだけでも結構ですので、何かアドバイスがいただきたいです。。 よろしくお願いいたします。
- 締切済み
- SQL Server
- youhei43
- 回答数2
- SQL文を教えてください
以下の2つのテーブルから結果に書かれている内容を取得したいのですが、どのようなSQLを作成すればよいでしょうか? 料理テーブル 料理名 値段 ラーメン 1000 カレー 700 焼肉定食 800 オプションテーブル 料理名 オプション(00:ご飯、01:味噌汁、02:サラダ) ラーメン 00 ラーメン 01 カレー 00 焼肉定食 00 焼肉定食 01 焼肉定食 02 取得したい結果 ご飯をa、味噌汁をb、サラダをcとして、オプション有の場合は'1'を、なしの場合は'0'をたて、 オプションをabcと3桁で表したいのですが。 料理名 オプション ラーメン 110 カレー 100 焼肉定食 111 説明が下手ですいませんが、よろしくお願いします。
- 締切済み
- SQL Server
- nanoha2011
- 回答数3
- 至急でSQLについて教えていただきたいです。
【至急で知りたいです】アクセス SQL文について アクセス・クエリについて初心者であり、恐縮ではございます。 以下を求めたい時にどのようなSQLで注文をすればよいかご指導いただきたいです。 内容: ・注文テーブル: 列は購入日・顧客コード・顧客種別・年代・レジコード・商品NO・商品名・購入数・購入金額 2011/05/01 11111 通常 30代 12345 9999 お菓子 1 500 2011/05/01 11111 通常 30代 12345 9998 ご飯 2 1000 2011/05/01 11112 新規 10代 12346 9999 お菓子 1 500 ・期間限定割引テーブル 列は商品NO・開始日・終了日 9999 2011/04/10 2011/04/20 9998 2011/05/01 2011/05/10 抽出したい内容 (1)注文テーブルにある購入日で日付を指定の上、(betweenで2010/06/01-2011/05/31までなど) 商品NOを特定の1品目、もしくは複数選択をした上で、その商品に対する期間内の購入数・購入金額を求めたい。 ただし、"期間限定割引テーブル"に差し掛かる期間のみ、別の列で分けて表示させたい。 (つまり割引期間と通常期間を列で分けることで売上の差を見極めたいのです。) 例えば、商品NOを9998で指定した場合の希望内容 購入日 商品No 商品名 通常購入数 割引購入数 通常購入金額 割引購入金額 2011/05/01 9998 ご飯 0 100 0 50000 2011/05/11 9998 ご飯 30 0 24000 0 (2)注文テーブルにある購入日で日付を指定の上、(上記(1)と同様)商品NOを特定の1品目、もしくは複数選択をした上で、 年代別で顧客種別ごとの客数を知りたい場合 例えば、商品NOを9998で指定した場合の希望内容 商品NO年代 リピート 初めて 新規 フリー 9998 10代 2000 500 100 30 9998 20代 3000 1000 200 50 9998 30代 5000 1050 400 100 ← 客数です。 ※上の客数は顧客種別かレジコードをカウントすれば良いと思いますが、一人のお客様が一回の会計で5品目買ったらレコードは5つになるため、重複を防ぐ必要があります。(対象の品物を何回購入したことがあるか表示したいので、、) また、"顧客種別"は通常・新規・フリーの三種類の言葉で分類分けされて登録されてますが、通常のみ、設定した抽出対象期間前にも1回でも購入があれば"リピート"としてカウント、過去に購入なく抽出対象期間内で初めて購入があった場合は"初めて"にカウントしたいです。 複雑かもしれませんが、どなたかご指導をよろしくお願いします
- ベストアンサー
- SQL Server
- papapapandatyun
- 回答数5
- SQL Server へのデータ追加について
現在a、b、cの店舗でそれぞれAccessをDBとして活用しているのですが、それとは別に 3店舗分のデータを一つにまとめた統合用DBとしてSQL Serverを利用したいと考えています。その際、それぞれ各店舗分のデータをSQL Serverへと追加していきたいのですが、どういった処理が最適で効率が良いのか分からず困っています。 希望する処理的には何らかのexeファイルを作成し、そのexeファイルを叩くとAccessからデータを吸い上げ、SQL Serverへとデータを追加するということを行いたいです。 私が考えられる処理としては以下の2点でした。 1、Accessから吸い上げたデータをストアドを使い、データを追加していく。 2、Accessから吸い上げたデータをCSVに変換し外部ファイルとし、ローダーを使用して データを追加する。 それぞれの店舗データが3万件程あります。 なるべくDBに負担をかけないで以上の様な事を行いたいです。 DBまわりにお詳しい方、ご教授よろしくお願い致します。
- 締切済み
- SQL Server
- y_amin0901
- 回答数1
- SQL2008でSQL2000のDTS機能を引き継
SQL2000環境からSQL2008環境へ変更予定です。 このお客様の環境がSQL2000のDTSを利用してbatやらvbsやらexeが多数動いており しかもDTSでスケジューリングされています。 SQL2008ではDTSは推奨していないとのことから、何か手段はないか模索しています。 Windowsのタスクでも良いのですが、DTSのようなログ出力ができないことと DTSのような一連の流れにならないので困っています。 SQL2008でジョブ管理のような機能がありますが、DTSのようにbatなどを登録する方法が 分かりません。 質問があやふやで申し訳ありませんが、何でも良いので知識を持ち合わせの方 教えて頂けると助かります。
- ベストアンサー
- SQL Server
- naomatu
- 回答数1
- マージレプリケーション ID値の返し方
知識が浅く、自力で解決できないのでご協力お願い致します。 SQL Server2005を使用しています。 サーバーAとサーバーBで、マージレプリケーションで同期をとっているテーブルがあります。 Aの方のテーブルにストアドプロシージャを実行してINSERTし、そのID値(シーケンス番号)を直後にアウトプットとして取得したいのですが、どうも上手くクエリがうまく書けません。 例: AとBのあるテーブルには自動付番のシーケンス番号60までデータがあります。 AにINSERTして新規に追加されたデータのシーケンス番号は61となるので アウトプットとしてその61を返したいのですが、 マージの影響でコミット前のIDを返すのでしょうか、2など全く違った値が返ってきます。 実際にテーブルを確認すると、ちゃんとAもBもシーケンス番号61で新規追加されています。 現状のクエリではINSERT文のあとに 『SET @no_seq = @@IDENTITY』と記述していて、 マージレプリケーションを解除していれば@no_seqに正しいID値を返します。 他には ・@no_seq = SCOPE_IDENTITY ・@no_seq = IDENT_CURRENT('table_name') を試しましたが結果は同じでした。 クエリの書き方なのか、あるいは マージレプリケーションの設定にも詳しくないので なにか原因に心当たりがあれば教えて頂きたいです。 よろしくお願い致します。
- 締切済み
- SQL Server
- noname#139341
- 回答数1
- Access2003 ファイル起動時エラーについて
アクセスのファイルが2個あります。 1つはAAA.mdb。もう1つはAAADB.mdbです。 AAAを開くと、AAADBが連動するシステムになっています。 今、両方が入っているServerの状況が悪くなっているので、それらを自分のPCにコピーしました。 Serverを停止し、AAAを開くと、かつてAAADBが存在していたパスに接続できないエラーが発生します。 そこで、実在するAAADBのパスを設定したいと思っていますが、その方法が解りません。 是非ともお教え下さい。 この2個のファイルは、私だけが使用しているので、他人との共用は考える必要ありません。
- ベストアンサー
- SQL Server
- 米沢 栄蔵
- 回答数1
- SQLサーバ2008R2でのWin認証不具合
SQLサーバ2008R2でのWindows認証 ドメイン内のサーバにネットワークログインにて ユーザID Administrator パスワード**** 保存する チェック付与 上記でログイン後・・・ 同一サーバのSQLサーバ2008R2にWindows認証でログインしようとすると ログインエラーが発生します。 「ドメイン名\Administratorはログインできません。」 Windows認証なのでWindowsログインIDを見てると思ってましたが 他のクライアントマシンでも同様に行ってみたところ ネットワークログインの直後に同様の事象が発生しました。 詳細等をご存知の方がいれば、教えてください。 よろしくお願いします。
- 締切済み
- SQL Server
- syuwa0115
- 回答数1
- sqlserver2008にODBC接続がNG
初めてSQLSERVER2008を使用します。 現行Sqlserver2000を使用していて、接続するのにODBC(V2000.85.1132.00)を使用しています。このODBCでSqlserver2008に接続するODBCを作成しようとしていますが、sqlserverエラー17(sqlserverが存在しないかアクセスが拒否されました)というエラーが出てしまいます。 また、sqlserver native client10.0でもsqlserverエラー121で接続出来ません。 サーバー側に何か設定が必要なのでしょうか。 アドバイス何卒宜しくお願い致します。」
- ベストアンサー
- SQL Server
- motomo0317
- 回答数2
- WHERE句の制限の有無について
下記の様なWHERE句を使っていますが、注釈の部分を生かす 極端に時間がかかるようになってしまいます。 (注釈は他の行でも大丈夫です、2~3行殺せば早くなります) なにか制限でもあるのでしょうか? WHERE u.締日コード = @締日コード AND u.入庫日付 <= @終了日付 AND u.部門コード = isnull(@部門コード,u.部門コード) AND u.分類 in ('輸入','輸出') AND u.分類 = isnull(@分類,u.分類) AND u.仕訳コード = isnull(@仕訳コード,u.仕訳コード) AND u.商社 = isnull(@商社,u.商社) --下記を復活すると遅くなる(4秒→38秒) --AND u.保管河岸コード =isnull(@保管河岸コード,u.保管河岸コード) --AND u.品名コード =isnull(@品名コード,u.品名コード) AND ( u.在庫員数 <> 0 or ISNULL(a.当期出庫員数,0) <> 0 or ISNULL(b.出庫員数,0) <> 0 or u.在庫重量 <> 0 or ISNULL(a.当期出庫重量,0) <> 0 or ISNULL(b.出庫重量,0) <> 0 )
- ベストアンサー
- SQL Server
- SEsyo
- 回答数1
- SQL文 について教えて下さい
「Access」で下記のように記述するものを「SQL Server」に置き換えた場合、 どのように記述する事になるのでしょうか。 SELECT Max(CLng(mid(TestId,4,10))) AS MAX_pti_patient_id FROM patient_info WHERE TestCd1 = 1 and TestFlg = 1 どなたか分かる方がいましたら教えて下さい。 よろしくお願い致します。
- ベストアンサー
- SQL Server
- lavino72
- 回答数3