SQL Server
- T-SQL 優先順によるデータの抽出
こんにちは。 あるテーブル"T_TABLE"に項目がC1(主キー)、C2が有り、データが以下のように登録されていた場合、 |C1|C2| ------| |BB|XX| ------| |AA|XY| ------| |DD|XZ| ------| とあった場合、 カラムC2に"XY"の値を含む行を第一に優先し、同カラムに"XZ"を含む行を第2に優先し、同カラムに"XX"を含む行を第3に優先して抽出するにはどのようにすればよいのでしょうか? 抽出するイメージは XY XZ XZ の順です。
- ベストアンサー
- SQL Server
- NoMusicNoLife49
- 回答数1
- SqlServerのユーザー権限
ずっとOracleを使用してきたのですが、このたびSqlServerの使用を検討することになりました。 Oracleでは、パスワードを知らなければDBの中身を参照することはできないですが、 SqlServerでは、Windows認証、SqlServer認証ともに、サーバー管理者であれば、 DBの管理ができるように思います。 開発時はいいのですが、リリース後は、サーバー管理者(客先のシステム部など)にも DBのデータは見せたくありません。 担当部署と開発担当者のみ参照できるよう設定したいのですが(パスワードを知る人間を限定する)、 SqlServerではそのような設定は可能なのでしょうか?
- 締切済み
- SQL Server
- mobuco6
- 回答数1
- MSDNselectしながらWHileでまわすには
お詳しい方、どうかたすけてください。 環境はMicrosoftSQLです。 やりたいことは、 あるテーブルからデータを取ってくる際に、最後の購入日を今の日付から1週間さかのぼりしながら、 何週間さかのぼったかを、useridと一緒に結果で返したいのです。 select userid , CASE WHEN MAX(購入日) > getdate()-7 THEN 1 WHEN MAX(購入日) > getdate()-14 THEN 2 as 'week' みたいなことなのですが、 これをWHILEを使って、永遠にさかのぼれるようにしたいのです。 例としては、 DECLARE @ss int; DECLARE @Recency int; set @ss = '7' set @Recency = '0' while (getdate()- @ss > '2012-10-01') begin set @ss = @ss- 7 set @Recency = @Recency + 1 SELECT user_id, case when max(購入日)> getdate()-@ss then @Recency as 'week' end from usrbuyingtable こんなかんじかとおもったのですが、 ぜんぜんうまくいきません・・ 文法チェックをお願いします。
- 締切済み
- SQL Server
- troubleSE
- 回答数1
- 全ストアドを対象に文字列を置換する方法について
こんばんわ。 SQLServer2008にて1データベース内の全ストアドを対象に、 ストアドプロシージャ記述内で特定の文字列を検索し、置換する方法を考えています。 以下のようなsqlで、ストアド内に文字列があるものを検索することはできたのですが、 ここから先、「★★★」を「○○○」にREPLACEする方法がわかりません。 select routine_name from information_schema.routines where routine_definition LIKE '%★★★%' and routine_type='procedure' 以下のようなsqlで更新しようとしたら、エラーが発生しました。 update information_schema.routines set routine_definition = REPLACE(routine_definition, '★★★', '○○○') where routine_name = 'XXX' (error:システム カタログへのアドホック更新は許可されません。) 不定期にデータベース名を変更することがあり、ストアドの数が多いため、 一括で変換できる方法がないかと探しています。 手作業で変更していく他ないでしょうか。 なにかヒントだけでもご教示いただけると嬉しいです。 よろしくお願いします。
- 締切済み
- SQL Server
- tomolyu
- 回答数1
- sql select文の作り方で困っています
C#2010で作ったアプリ から sql サーバー2008のデータベースにselect文を発行する際に困っています 検索キーワードが3つあるのですが、3つのキーワードの組み合わせでselect文を発行したいのですが、種類がたくさんできてしまい 困っています 例えば、検索キーワード A、B、Cの3つとすると、以下の組み合わせで7種類ものselect文を作るのが煩わしいです GetData(A) GetData(B) GetData(C) GetData(A,B) GetData(A,C) GetData(B,C) GetData(A,B,C) これらを1つのselect文でさばくには、どうすれば良いでしょうか? ご指導よろしくお願いいたします
- ベストアンサー
- SQL Server
- gin57773222
- 回答数2
- SQLを使ったデータの作成
コマンドプロントを使用し、SQLでデータベースを作成しています。 大きなテーブルを複数作り、複数のデータの作成をしています。 1.テーブルの方の定義を行い、キー項目を決める。 2.データは、一つ一つの項目ごとに、データの型やサイズを決める。 3.いくつか検索をした際に、ちゃんと結果の違いが確認できるように、100レコード程度のデータを作成する。 の制約で制作しています。 SQLに触って、まだあまり経っていないためどうプログラムを組めばいいのか分かりません。 テーブルの意味などや、キー項目、などの言葉の意味もあまり理解出来てません。 例えば データベース:ONLAINGAME テーブル1:MEMBER テーブル2:WEAPON を制作し、MENBERの中に50件、WEAPONの中に50件データを作ればいいのでしょうか。 データの作り方も少し心配です。 create table MENBERl(age int, name varchar(20) , primary key (aa); 上記の文を打ち、insert into MENBER ( age, name) values(20, 'takasi'); と書けば、制約通りデータが格納できるのでしょうか? 分かりずらいとは思いますが、詳しいお答えお願いいたします。
- 締切済み
- SQL Server
- migi_shita
- 回答数1
- SQLネットワークエラー時の再接続
SQLServer2000とAccess2000(adpファイル)でシステムを組んでいます。 データベースとの接続は、アプリケーションの「データリンクプロパティ」内で設定してあり、初期立ち上げフォームに次のコードを記述して接続しています。 Option Compare Database Option Explicit Public cn As ADODB.Connection Sub p_接続開始() ‘データベースとの接続を行うプロシージャ Set cn = Application.CurrentProject.Connection cn.CursorLocation = adUseClient ‘カーソルをユーザークライアントにする End Sub その後、フォームを開いた状態で一定時間経過すると、PCが「システムスタンバイ」状態になり、スタンバイを解除すると次のエラーが出て接続できません。 「[DBNETLIB][ConnectionWrite(send()).]一般的なネットワークエラーです」 しかしいろいろ試した結果、フォームのクリックイベント時に、次のコードを記述したところ、一時的に接続できるようになり、入力フォーム上のデータがSQLServerに保存出来るようになりました。 Set cn = New ADODB.Connection cn.ConnectionString = Application.CurrentProject.Connection cn.Open しかしその後、このフォームを閉じたり、他のフォームに移動したりすると、「[DBNETLIB][ConnectionWrite(send()).]一般的なネットワークエラーです」が出てエラーとなります。 データベースを終了し、再度開き直すと、完全に元通りに復活しますが、上記でフォームを閉じたり、移動したときに、エラーが出ないようにするにはどうしたらいいでしょうか? Set cn = New ADODB.Connection cn.ConnectionString = Application.CurrentProject.Connection cn.Open この記述は、試行錯誤の末、出来たものであり、これが本当に正しいかどうかわかりません。 どなたかわかる方教えてください。
- ベストアンサー
- SQL Server
- noname#192871
- 回答数1
- IDENTITYを設定
Microsoft SQL Server Management Studioを使っています。 テーブル追加時にIDENTITYの設定方法は 載っていたのですが、すでにあるカラムに対して はありませんでした。 すでにあるカラムにIDENTITYの設定方法を教えて下さい。
- ベストアンサー
- SQL Server
- suhixinkusu
- 回答数1
- SQL2008から2000へデータコピーしたい
使用環境は DB SQL Server2008 Express 使用ツールは Microsoft SQL Server Management Studio です サーバーは 64bit です インストールファイルは SQLEXPRWT_x64_JPN.exe です 現在、同じネットワーク上には SQLServer 2000のDBを使ったサーバーはあるので すがSQLServer2008は1台だけです 今回 SQL2008のDBを 2000の方にバックアップ用としてコピーしたいと思います ファイルの保存だけであれば可能かと思いますが 万が一の時に 接続先を変更して使えるようにしたいと思います。 認識として、 ・データファイルやログファイルは上位DBから下位DBへアタッチ操作はで きない (上位DBのファイルを下位DBがアタッチ操作できない) ・データベースコピーはできない そこで データコピー をしたいと思っています。 下記 HPを参考にフリーソフト(DBCopyTool.exe)を使ってみたのですが http://www.atmarkit.co.jp/fdotnet/dotnettips/859dbcopytool/dbcopytool.html サーバーの登録はうまくいくのですが、対象DBの登録について SQLServer2008express や SQLServer2005express はうまくいくのですが SQL2000のサーバーでは、下記メッセージが出てきます Fehler:Error getting the database.オブジェクト名'sys.database'は無効です 確認したいのは 上記フリーソフトを使われたことがある方、同じような現象には ならないかどうか 何か設定、確認不足なのでしょうか? また当初の希望内容を実現するため、他の方法があれば ご教授願いたいと思いま す。 同HP内の文末に、SQLServer 2000とSQL Server 2008との間でコピーが正しく行え た とあり決して依存するわけではないのですが、もしやと思い試しているのですがうまくい きません。 仮に 2000のDBを2008にコピーできるとしても、該当DBの選択のところでエラーが 出てしまうのはクリアする必要があると思うのですが… 以上 宜しくお願い致します。
- ベストアンサー
- SQL Server
- kantada2012
- 回答数1
- SQLserver2005⇒2012へ移行
現在SQLServer2005 の WorkGroup を使用しています。 現在のPCでは処理が遅い為、新たにPCを新調し、更にSQLServer2012 Standardも購入する予定です ここで質問なのですが、 SQL2005で作成したテーブルのファイル「○○.mdf」と「○○.ldf」は SQL2012でも読み込むことは出来るのでしょうか? もっと単純に言うと SQL2005で使ってたHDを抜いてSQL2012をインストールした新PCに繋げて アタッチすればそのままSQL2012で使うことはできるのでしょうか?
- ベストアンサー
- SQL Server
- kikei
- 回答数2
- 'modify' 付近に不適切な構文があります。
Microsoft SQL Server Management Studioを使っています。 下記のクエリを実行するとエラーが出ます。 クエリ alter table Test_table modify name nchar(20) エラー メッセージ 102、レベル 15、状態 1、行 1 'modify' 付近に不適切な構文があります。 今の状況はnchar(10)なのですが、 nchar(20)に変更したいのですが、 どうすればよろしいでしょうか? 参考にしたURL http://www.syboos.jp/database/doc/alter-table-modify.html
- ベストアンサー
- SQL Server
- suhixinkusu
- 回答数1
- SQLServer2008のインスタンス名について
使用環境は DB SQL Server2008 Express 使用ツールは Microsoft SQL Server Management Studio です サーバーは 64bit です インストールファイルは SQLEXPRWT_x64_JPN.exe です インストール時に 既定のインスタンス名 を選択し Management Studio ツールを使って接続しようとしたのですが サーバー名¥SQLEXPRESS になってしまいます 希望する内容は サーバー名のみ で接続したいのです 正確には 最初、名前付きインスタンス名(SQLEXPRESS)を選択して インストールしてしまい あとでアンインストールし 既定のインスタンス名で再インストールしているのですが 上記内容になります。 アンインストール後 関係フォルダを削除(一時 別フォルダに保管)しました 具体的には C:\Program Files\Microsoft SQL Server のフォルダを 一時別のフォルダにして、再インストールしてみたのですが結果は同じでした。 ちなみに、SQLServer2005Express では 上記フォルダを削除(移動)することで インスタンス名は付かなくて サーバー名だけになりました。 何か不要な設定が残っているように思いますが… 確認したいのは SQL Server2008 Express では インスタンス名を無しにするこ とができるのかどうか 再インストール時、削除するフォルダが足りないのかどうか 以上 宜しくお願い致します。
- ベストアンサー
- SQL Server
- kantada2012
- 回答数1
- 日時範囲でグループ化された最大値
任意の時刻にデータをモニタリングしているシステムがあり、データがMS SQL Serverに保存されています。 int ID int DeviceID 端末番号 int DeviceValue 計測値 smalldatetime DeviceTime 日時 これを、任意の日時範囲を指定し、一日単位で集計された、端末ID、計測値の最大値という形式で取得したく思います。 計測日 端末番号 計測最大値 2012/01/01 10002 34543 2012/01/01 10003 33211 2012/01/02 10002 23450 ... ... DBが得意でないため、困っています。 どなたかお助けいただけないでしょうか?
- ベストアンサー
- SQL Server
- nayutax
- 回答数1
- SQLServerでViewの参照・・・
SQLServer同士のサーバで、別のサーバーの特定のViewを参照する事ができますか? <例> Aサーバーで、BサーバーのViewを参照 Select * From [B].[aaa].dbo.v_xxxx 上記のようなことがしたいのです。 データの内容上、他のテーブル・ビューは参照させたくありません。 可能な場合、お手数ですがその方法もご教授頂けるととても助かります。 宜しくお願い致します。
- 締切済み
- SQL Server
- qunao
- 回答数1
- Compact 3.5とVS2012
SQL Server Compact 3.5 SP2について教えてください。 現在、SQL Server 2008R2で運用されているWebアプリケーションシステムがあります。 ASP.NETで作られており、データアクセスはLINQ for SQLで動作しています。 今回、ちょっとしたサーバ移転があり、データアクセスの頻度がさほど高くない理由から、SQL Server Compact 3.5での稼働を計画しています。 (Compact 4.0だとLINQが動作しないらしいので) で、開発環境(VS2012)にてSQL CE3.5のファイルを作ろうとしたところ、サーバエクスプローラのプロバイダ選択画面で、CE3.5も4も出てきません。 (通常のSQL Serverや、mdf形式のSQL Serverプロバイダは正しく出てきます) そこで質問なのですが、 ・SQL Server CE3.5はVisual Studio 2012に対応しているのでしょうか? ・皆さんのVisual Studio 2012では、SQL Server CEをデータプロバイダとして、サーバエクスプローラを動作させることができますか? よろしくお願いします。
- ベストアンサー
- SQL Server
- nayutax
- 回答数1
- SQLServer2008 メンテナンスプラン
御世話になります。 SQLServer2008 メンテナンスプランについてご教示頂けたらと 存じます。 バックアップ処理などをメンテナンスプランにて設定して 処理を行っています。 毎年、DBが追加になるのでわざわざメンテナンスプラン画面を起動して 追加しなければなりません。 それをコマンドというか、バッチ処理などで追加できないものでしょうか? 宜しくお願い致します。
- 締切済み
- SQL Server
- takakita
- 回答数1
- データの加工SQL
お世話になります。 SQL Serverのデータ加工についてSQLを教えてください。 元のデータをSQLを使って下記のほしいデータのようにして取得したいのです。 (出身地毎の行で各種目別に集計したい) お願いします。 *元のデータ(MotoTable) 出身地,得点,種目,実施年,実施月 東京,80,幅跳び,2012,10 東京,54,反復横跳び,2012,10 長野,66,幅跳び,2012,10 新潟,47,幅跳び,2012,10 新潟,90,幅跳び,2012,10 佐賀,25,幅跳び,2012,10 佐賀,66,反復横跳び,2012,10 東京,100,幅跳び,2012,10 東京,19,反復横跳び,2012,10 愛知,5,懸垂,2012,10 愛知,6,懸垂,2012,10 佐賀,7,懸垂,2012,10 *欲しいデータ 出身地,合計点,幅跳び,反復横跳び,懸垂,実施年,実施月 東京,253,180,73,0,2012,10 長野,66,66,0,0,2012,10 新潟,137,137,0,0,2012,10 佐賀,98,25,66,7,2012,10 愛知,11,0,0,11,2012,10
- 締切済み
- SQL Server
- cosmosStr
- 回答数2
- SQLとC#connectについて
独学で勉強しているのですがさっぱり分かりません...。 C# visual studio へ SQL server情報を読み込みたいのですが...Button1を押したら、sql に作成してある(ingredientという) データをrichtextbox へ送りたいです。 今のところ、SQLにcommandを送り、開き、リーダーで呼びました。 SqlConnection sc = new SqlConnection(@"........."); SqlCommand cmd; cmd = new SqlCommand ("Select * from ingredients", sc); sc.Open(); SqlDataReader reader = cmd.ExecuteReader(); その後作っておいたクラスでリストを作りストアしました。ingredientにはidとnameだけです。 List<Ingredient> ingredients = new List<Ingredient>(); while (reader.Read()) { string testID = reader["id"].ToString(); string ingName = reader["name"].ToString(); Ingredient oneIng = new Ingredient(Convert.ToInt32(testID), ingName); ingredients.Add(oneIng);} 今リストの中に情報が入っているということは分ります。でも、これをrichtextboxにどう整理して入れるのかは分りません。教えて下さい!!!
- 締切済み
- SQL Server
- Chibibebe
- 回答数1
- group by がうまくいきません。
以下のようなデータがあります。 管理番号 ステータス 受付日 502035 50 2012/09/28 502035 30 2012/09/25 502035 40 2012/09/30 502036 10 2012/09/28 502036 20 2012/09/30 502037 10 2012/09/29 上記のテーブルを管理番号でグループ化し、 ステータスの一番小さい番号の受付日を抽出したいと 考えています。 管理番号 ステータス 受付日 502035 30 2012/09/25 502036 10 2012/09/28 502037 10 2012/09/29 ↑求めたいSQL内容 SELECT 管理番号, Min(ステータス), 受付日 FROM ステータステーブル GROUP BY 管理番号 で行うと、受付日が異なるステータスだと 複数抽出されてしまいます。 First(受付日) Last(受付日)にすると受付日が うまく抽出されません。 受付日をステータスが一番小さな管理番号 でグループ化し、表示することはできますでしょうか? よろしくおねがいいたします。
- ベストアンサー
- SQL Server
- seido4818
- 回答数3
- ストアドプロシージャでN個の引数を与える方法
SQL Server 2012 の環境でカンマ区切りでN個の要素を引数としてストアドプロシージャを実行したいのですが、可能でしょうか?(CONCAT関数のような指定方法をイメージしています。) 【呼出イメージ】 EXECUTE StoredTest N'10001', N'10002', N'10003', N'10004' ...N すみませんが、どなたかご教示いただけないでしょうか?
- ベストアンサー
- SQL Server
- miliken
- 回答数1