SQL Server

全2973件中221~240件表示
  • TranzactSQL文 文字列変数同士の連結

    文字列変数の連結について質問いたします。 通常以下の場合、結果は望んだとおりになります。 ----------------------------------------------- SET @会社=N'A社' SET @別会社=N'B社' SET @結果=@会社+'、"+@別会社 SELECT @結果 ’A社、B社' ---------------------------------------------- 以下のように記述にして,複数会社名を連結させる目的で FETCHを使用して変数に値を格納しようとしていますが 結果NULLが返されるのはなぜでしょうか。 ---------------------------------------------- DECLARE myCursor CURSOR FOR SELECT 会社名 FROM 会社マスター OPEN myCursor FETCH NEXT FROM myCursor INTO @会社名 WHILE @@FETCH_STATUS=0 BEGIN     @結果=@結果+@会社名    FETCH NEXT FROM myCursor    INTO @会社名 END CLOSE myCursor DEALLOCATE myCursor SELECT @結果

    • Maeyati
    • 回答数2
  • SQL-Server トランザクションログの肥大化

    初めまして。 稼働中のシステム保守において問題が発生しています。 早急に解決したいのでお力をお借りしたいです。 稼働中サーバー(SQL-Server2008)にてトランザクションログが肥大化しております。この手の問題はネットで検索すると解決方法が出ているので実行してみました。 まずは…ログファイルの圧縮。 ManagementStudioより操作をGUIで行いましたが、処理自体が一瞬で完了してしまいLDFファイルを見ても圧縮前と何も変わっておりません。 続いて…ログファイルのバックアップ バックアップすることでログファイルの切り捨てができるとの事で、同様にManagementStudioよりバックアップを実行してみました。かなり処理に時間が掛かるようでしたが、30分程待ったところ(進捗20%)でエラーが発生し、空き容量が足りないのでバックアップに失敗したようです。 160GB程残っていますが、これでも容量不足とは…。 上記のような事態に陥った場合にどうするのが賢明でしょうか? ちなみに通常はメンテナンスプランにより、1日1回完全バックアップを取って保存しています。 ログファイル自体はバックアップを取っていませんでした。(必要性が理解できなかったもので…) 稼働中システムに問題が発生した場合は基本的には前日のデータに戻すような対応をする契約ですので、復元時点は厳密にN時間前等を指定する必要性がない為、ログファイル自体はあまり必要ではないという認識で良いのでしょうか? また今後、定期的にログファイルのバックアップを取るにしても、ログファイルのバックアップ容量が大きい為、Nヶ月分残すような運用をする場合、従来のデータバックアップに加えてログファイルのバックアップが加算され200GB程度のHDDでは追いつかないのですが、ログファイルのバックアップは上書きしていき、データの完全バックアップのみNヶ月分残すというような運用でも問題なく復元できるのでしょうか? 以上、3点質問してしまいましたが、どなたかご回答していただけると幸いです。 よろしくお願い致します。

    • dg004
    • 回答数1
  • 複雑な条件下におけるupdate文について

    sqlserver(2008R2)についてクエリ文が上手く書けません。 お手数をおかけいたしますが、お分かりになる方はご教授いただければと 思います。 まず、元となるテーブルおよび作成したい完成系は添付ファイルをご確認下さい。 personal_id、personal_name、personal_address、personal_tel、personal_date列を 持つテーブル(personal_table)から 「select * into #table01 personal_table」に よって一時テーブル#table01を作成し、personal_name・address・telがnullの場合に、 personal_dateが直前時におけるnull以外の値をセットしたいと思っています。 (ただし、セットするのはpersonal_id毎で、最もpersonal_dateが若い者には 必ずpersonal_name・address・telが入っているものとします)。 なお、以下は私が作成したクエリになります。 項目1つずつっと思い、 とりあえずpersonal_nameをpersona_idおよびpersonal_dateを用いて updateしようと思ったのですが、personal_nameがすべてnullになってしまいました。 --------------------------- select * into #table01 from personal_table update #table01 set personal_name = (select personal_name from #table01 A where #table01.personal_id = A.personal_id AND #table01.personal_date = (select MAX(A.personal_date) from #table01 A where #table01.personal_date > A.personal_date AND #table01.personal_id = A.personal_id)) SELECT * from #table01 --------------------------- 完成系を作成するにあたってどのようなクエリを書けばよろしいのか、 ご教授いただければと思います。

    • noname#250977
    • 回答数2
  • Select文の遅延

    以下の.net関数を使用して、Select文を作成し SqlServerからデータを抽出しています。 http://msdn.microsoft.com/ja-jp/library/zxkb3c3d(v=vs.110).aspx http://msdn.microsoft.com/ja-jp/library/system.data.common.dbdataadapter.selectcommand(v=vs.110).aspx 条件を変え二つのSelect文を作成したところ、 後者だけが極端に遅延しタイムアウトしてしまいます。 (1)Select ID From TestView Where ID = 0 ※ID列はint型 (2)Select ID From TestView Where ID = 1 ※ID列はint型 Select対象となるデータ数(TestView)はかなりの量がありますが、 ID = 0、ID = 1 によって抽出されるデータ自体はどちらも10件程度です。 なぜID = 0ではすぐに抽出でき、ID = 1では遅延するのか全く原因がわかりません。 私自身も色々と確認をしているのですが、 過去の経験則や、ここを確認すると良いなど 調べるための情報がありましたらご提供頂けませんでしょうか? 宜しくお願い致します。

  • 多数のテーブルでのFULL OUTER JOIN

    SQL Sever 2005 を利用しております。5つのテーブルから値を取得するSQL文を作成したいと考えております。3つまでのテーブルのFULL OUTER JOIN は例がるのですがそれ以上となると調べても判りませんでした。ご教授お願い致します。 TABLE1~TABLE2は同じ構成で発生した5つのテーブルを1つのテーブルに合体して データどれか1つのテーブルで発生すれば表示したい。 出来れば現在作成中のSQL文がFULL OUTER JOINで作成しているのでこれを流用したいので FULL OUTER JOIN の方法で教えて頂ければ幸いです。 以上よろしくお願い致します。 (※IDが主キー) テーブル名:TABLE1 ID-----金額 ----------- 01-----1000 11-----2000 テーブル名:TABLE2 ID-----金額 ----------- 02-----2000 12-----3000 テーブル名:TABLE3 ID-----金額 ----------- 03-----3000 テーブル名:TABLE4 ID-----金額 ----------- 02-----1000 04-----4000 テーブル名:TABLE5 ID-----金額 ----------- 01-----1000 05-----5000 作成したいSQL文の結果 ID-----TABLE1金額---TABLE2金額---TABLE3金額---TABLE4金額---TABLE5金額 01-----------1000----------------------------------------------------1000 02-------------------------2000------------------------1000 03----------------------------------------3000 04-----------------------------------------------------4000 05-------------------------------------------------------------------5000 11-----------2000 12-------------------------3000

  • sqlite3でcsvのインポートができない

    macでsqlite3でcsvのインポートができません。 in.txt -------- 1,りんご,赤色 2,みかん,黄色 ターミナル上で sqlite> .separator , sqlite> .import in.txt tbl1 といった具合にやると、改行が認識されないのか、 expected 2 columns of data but found 4 といったエラーがでます。 対処法を教えてください(><)

  • yyyy/M/dをyyyy/MM/ddに変換

    SQLServer 2005にて文字列型に入っている日付データの変換を行いたいと思っています。 現状yyyy/M/d(2010/1/1)のようになっているのをyyyy/MM/dd(2010/01/01)に変換したい のですが方法が分かりません。 SELECT CONVERT(DATETIME,(CONVERT(VARCHAR(10),テーブルの値)),120) FROM テーブル名 とするとCHAR データ型から DATETIME データ型への変換の結果が日付/時刻の値の範囲外です。 というエラーになっていまいます。どういった方法なら実現できるのでしょうか。 すみませんがご教授ください。 宜しくお願い致します。

  • SQLServer 複数列から同一語を検索

    SQLServer2008R2を使用しています。 次のようなテーブルAがあります。 ID Code1 Code2 Code3 Val1 Val2 Val3 -------------------------------------- 1  A1             1 2  A1   Z1         2   1 3  B1   A1         1   1 この時、Code1~3にあるA1に該当するVal1~3の合計をそれぞれ取得したいのですが、SQL文の書き方がわかりません。 SELECT Sum(Val1), Sum(val2), Sum(Val3) FROM A WHERE Code1='A1' OR Code2='A1' OR Code3='A1' のようなSELECT文では、B1・Z1の数も合計してしまいます。 B1・Z1の数が含まれないようなSQL文は、どのように記述したらよいでしょうか? どなたか有識者の方いらっしゃいましたら、宜しくお願い致します!

  • SQLSERVERのカラム内 文字間指定検索

    SQLSERVER2008にてフルテキストインデックス検索であるカラムを検索しています。 例 naiyouというカラムに関してレコードとして、 「始まり 私は人間です。 第二章 私はさるです。 終わり」 という文章が1レコード入っているとします。 この場合、仮にcontains (naiyou,'人間')と検索するともちろんこのレコードがHITします。 今回やりたいのは、 ・naiyou内の第二章以降の文章で「人間」と検索した場合、ノーヒットとなること ・naiyou内の始まり~第二章までの間で「人間」という検索をして、HITすること という、カラム内のある文字間でのCONTAINS 検索というのは可能でしょうか、そしてそのSQLはどのようにかけばいいのでしょうか?というご質問です。 NEARとかでできるのかと思い、いろいろやってみましたがうまくいきませんでした。 なぜこのようにしたいかというと、いま処理している文章の冒頭がすべて同じ文面になっており、文面内の単語で検索されてしまうと全件HITしてしまうからです。 本来なら、その冒頭を除いた文章で単語をHITさせたいため、範囲指定を考えました。 ご教授いただければ幸いです。

  • SQL Server2008のスカラー変数

    AccessからSQL Server2008に接続しています。 MSDE2000で、ストアドプロシージャを作成するときは @ST INT = 1 AS SELECT ....... で実行できましたが、2008はエラー となります。 DECLARE @ST int = 1 SELECT ...... とすると、変数@STは宣言済みとエラーになりますが、なぜでしょうか? ご存じの方がおられましたら、よろしくお願いします。

  • MySQLのGROUP_CONCATを実現する方法

    こんにちは。 T-SQLでMySQLのGROUP_CONCAT関数と同等の結果を出力する方法を探しています。 やりたいことは、 テーブル"T_A"の項目にカラム"C1"、"C2"があると仮定します。 テーブル"T_A"にはデータが以下のように登録されています。 C1|C2| ------ A1|YY| A1|XX| カラムC2のYY、XXの値を文字列連結"YY/XX"として、1レコードで表示したいです。 C1|C2 | --------- A1|YY/XX| ご存知の方がいらしたら、お教え願います。

  • SQLのSELECT文で*を使わない理由

    SQLでSELECT文を使う場合、大抵  SELECT ID, user FROM u_table のように、取得する項目を指定すると思います。 これを、  SELECT * FROM u_table としないのには、トラフィックの問題以外に何か理由があるのでしょうか?

  • SqlServerのスクリプト実行について

    Windows2003ServerにてSqlServer2005をバッチファイルから実行する時について質問させてください。 下記の「sql.bat」にて「script.sql」を実行した場合、「log.txt」に出力される内容は'222'をアップデートした結果「(x行処理されました)」のみが出力されますが、'000'や'111'を更新した結果も出力させたい場合、「script.sql」を3分割し、「sql.bat」で3ファイル実行するしかないのでしょうか。 「sql.bat」 sqlcmd -S SERVERNAME -d SCHEMANAME -i c:\script.sql -o c:\log.txt 「script.sql」 update tablename set data1 = 'aaa' where data1 = '000' update tablename set data1 = 'bbb' where data1 = '111' update tablename set data1 = 'ccc' where data1 = '222'

    • 天 桜
    • 回答数1
  • SQLServer DELETE 件数取得

    COBOL上(NETExepress5.0)にSQL構文を埋め込んでプログラムを作っています。 DELETE文を発行して、そのDELETE件数を取得して、DISPLAY文に表示したいのですが、 どのようにすればよいでしょうか。 DELETE文(COBOL文中) 例)  EXEC SQL DELETE FROM テーブル名  END-EXEC 先にSELECT COUNT(*) FROM テーブル名 とかしてもかまわないです。 よろしくお願いします。

  • 縦持ちになっているデータを横持ちにしたいのですが

    SQLServser2012で縦持ちになっているデータを横持ちにしたいのですが、どうしたらよいでしょうか? 〇以下のように現在、テーブル設計されております。 請求TBL --------------------------------------------- 請求ID 請求先名 001 田中 太郎 002 鈴木 一郎 注文TBL ------------------------------------------------ 請求ID 注文ID 発送先 商品ID 個数 001 001 田中 太郎 A 10 001 002 佐藤 次郎 A 5 002 003 鈴木 一郎 B 3 商品TBL ----------------------------- 商品ID 商品名 A みかん B りんご このデータを以下のような結果として得たいのですが、どのようにしたらSQLを作成したらよろしいでしょうか? 請求ID 請求先 商品内容 ------------------------------------------------- 001 田中 太郎 みかん*10、みかん*5 002 鈴木 一郎 りんご*3 ご教授の程、宜しくお願い致します。

  • JOIN句の記述の違いによるパフォーマンスへの影響

    以下のEx1,2のJOIN句の記述方法の違いはクエリのパフォーマンスに影響するのでしょうか? 2万件程度のデータ量で試してみたのですが明確なパフォーマンスの違いを確認できませんでした。(1秒~2秒) 単純に書き方だけの違いであれば心置きなく自分ではわかりやすいと感じているEx1の記述方法で統一したいので。 よろしくお願いします。 -- /* SQL Server 2008 R2 */ -- /* 受注した全ての商品名を取得するクエリ(例) */ -- /* 登場テーブル・カラム */ -- // M_goods 商品マスタ -- // code 商品コード -- // name 商品名 -- // T_orders 受注テーブル -- // number 受注番号 -- // T_orderdetails 受注明細テーブル -- Ex.1 SELECT M_goods.name FROM T_orders LEFT JOIN T_orderdetails ON T_orders.number = T_orderdetails.number LEFT JOIN M_goods ON T_orderdetails.code = M_goods.code -- Ex.2 SELECT M_goods.name FROM T_orders LEFT JOIN T_orderdetails LEFT JOIN M_goods ON T_orderdetails.code = M_goods.code ON T_orders.number = T_orderdetails.number

  • SQL Server2008 の解析

    SQL Server2008でパフォーマンスの悪いSQLなどを調べようと思い、 以下のような説明を参考にしています。 http://msdn.microsoft.com/ja-jp/magazine/cc135978.aspx http://msdn.microsoft.com/ja-jp/library/ms189741.aspx しかし、エラーが出て実行できません。 SQL文から抜粋しますと、以下の様なエラーが発生ます。  ・THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2    →'max' の近くに無効な構文があります。  ・CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt    →'APPLY' の近くに無効な構文があります。  ・SELECT qs.execution_count   FROM sys.dm_exec_query_stats AS qs    →'sys.dm_exec_query_stats' は無効です。 調べても何が悪いのかわからず困っています。 何がいけないのかご教授いただけませんでしょうか。 よろしくお願い致します。

    • goram
    • 回答数1
  • SQL ServerにCSVをインポート

    SQL Server Express 2012にCSVファイルのデータをインポートさせたいと思っています。 SQL Server のデータのうち、主キーはdate型、その他はbit型、nvarchar型です。 SQL Serverのテーブルのデータには、#2013-01-01#, #False#, "あいう"などというデータがあります。 CSVは、Event.csvというデータです。 インポートするにあたって、BULK INSERTを利用しようとしています。 上記のデータで下記のコードをSQL Server Managemant Studio Expressで実行するとエラーとなります。 FROM 'D:\Business\Data\Event.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); データを別の文字列にするべきなのか、#で日付やブール値を囲わない方がよいのか、あるいはカラム名の入ったCSVを用意するべきなのかなど、疑問が多いのですが、実際はどうあるべきなのでしょうか。 なお、上記のデータはもともとExcel のデータをVBAを使ってCSVファイルに出力したものなので、CSVの形式を別の状態のデータに変換することはできます。 もともとの目的は、ExcelのデータをSQL Serverのデータにインポートしたいだけです。 よろしくお願い致します。

    • Fabos
    • 回答数1
  • 最適なデータベースソフト

    5年間くらいの期間で、毎年300万件くらいのデータを統合して管理しようとしております。 こういった時どんなソフトを使うのがいいか教えてください。 「Microsoft SQL Server 2008 Developer Edition」というのが出てきて検索してみましたが、アクセスに比べかなり敷居が高いように思いました。 (アクセスでは2Gは軽く超えます)

    • ticktak
    • 回答数4
  • SQLServerのGROUP BYについて

    SQLServerでGROUP BYを使用してデータをSELECTする場合について質問があります。 GROUP BYを行う項目に’△△1’と’1△’というデータが入っていた場合、   ※上記の△は半角スペースです。 ’△△1’と’1△’は同じグループとして、グルーピングされるのでしょうか。 Oracleにデータを移行して、GROUP BYをかけると上記のケースはデータ件数が異なります。 これはSQLServerの仕様なのでしょうか。(バージョンは2000です。) お手数ですが、ご教示願います。 

    • aikibon
    • 回答数2