SQL Server
- 自己結合による新しいカラムの作成
いつもお世話になっております。テーブル内の2つのカラムから、一意となるようにカラムに値を入れたいのですが、どのようにすれば良いのでしょうか?やりたいことは、以下のようなことです。 どうぞよろしくお願い致します。 現状のテーブル code_up code_low code あ a い b う c あ a い c 作りたいテーブル code_up code_low code あ a 1 い b 2 う c 3 あ a 1 い c 4
- 締切済み
- SQL Server
- mal1980
- 回答数1
- SQLサーバーへの接続について
SQL server 2005(OS:Windows7)へ、WindowsXPのマシンからリモート接続しようと思い、 ODBCにて接続の設定を行いたいのですが、接続できない状態です。 Windows7側で、XPの端末のユーザー情報を登録することで接続が出来ると思い、 色々なサイトを見てみたんですが、よく分からず・・・ Windows7側ではどのような設定が必要なのでしょうか? (アカウントの追加? それともSQLserverで何か設定が必要?) 教えてください><
- 締切済み
- SQL Server
- ya-cha
- 回答数2
- sqlストアド質問です
sql whereの質問なのですが、 社員マスタに退職日があり、退職日が入っているデータのみ抽出しようとしています 退職日には、日付orNullが入っています。 where 退職日 is date はエラーになったのですが どう書けば良いですか? 宜しくお願いします。
- ベストアンサー
- SQL Server
- kirin4247
- 回答数2
- グループ後に結合させたいのですが・・
以下の様なデータがあります。 氏名 科目 得点 1行目 Aさん 国語 100 2行目 Bさん 国語 90 3行目 Aさん 英語 80 これを以下の様な表にしようと思い、 氏名 国語 英語 Aさん 100 80 Bさん 90 - 以下のSQL分を書きましたが、Aさんの得点が2倍になってしまいます。 SELECT SL.氏名 ,SUM(KT.得点) AS '国語' ,SUM(ET.得点) AS '英語' FROM [test_db].[dbo].[得点データ] SL LEFT OUTER JOIN ( SELECT * FROM [test_db].[dbo].[得点データ] WHERE 科目='国語' ) KT ON ( KT.氏名 = SL.氏名 ) LEFT OUTER JOIN ( SELECT * FROM [test_db].[dbo].[得点データ] WHERE 科目='英語' ) ET ON ( ET.氏名 = SL.氏名 ) GROUP BY SL.氏名 原因として、グループ化が結合の後にしているのだと考えています。 どの様に修正したら、いいでしょうか?
- ベストアンサー
- SQL Server
- ghost305jp
- 回答数1
- SQL2005 のクエリ文について
いつもありがとう御座います(ご回答いただいた皆様)。 ちょっと悩んでおりますので何かヒントを頂けたら・・・よろしくお願いします。 テーブルAに「会員No」と「来店ポイント」、という列があったとします。 テーブルBにも「会員No」と「来店ポイント」があったとします。 AB両方の会員Noは=です。 テーブルAの「来店ポイント」が間違っているので、テーブルBの「来店ポイント」と 差し替えたいのですが、どの様なクエリになるのでしょうか? 自力で何とかなるかな、、と思い2時間ほど粘りましたが、上手くいかないので・・・ (中堅外食チェーンの板前をしてますが、何故かサーバ管理者までしてます。 若いというだけで・・・そんな環境なので聞ける人も居らず、いつもここが頼りになってます。 すみません) 何卒、よろしくお願いします。
- ベストアンサー
- SQL Server
- zenigata711
- 回答数3
- ManagementStudioからのデータ削除
初めてSQL Server 2008 Expressを入れて使用しているのですが、 作成したテーブルに同一データをいれて、 SQL Server Management Studio から上位200行編集を選択し その入れたデータを削除すると、エラーが発生して削除できません。 エラー内容は、 エラーメッセージ:行の値が更新または削除された為、行が一意になりません。または複数の行が更新されます。 特にプライマリキーの設定やインデックスなどは使用していないのですが、何か設定が必要なのでしょうか。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。
- ベストアンサー
- SQL Server
- hika_naru_k
- 回答数1
- SQL server 2005に接続可能な環境は?
SQL server 2005に接続可能な環境は、どのようなものがあるでしょうか? SQL server 2005に接続する検索システムをC#2005で構築しました。 C#の他にどのような開発環境、開発言語でSQL server2005に接続可能でしょうか? PHPは、接続可能なようなことをWEBで見ました。 今はやりのAndroid端末やiPod,iPadからSQL serverに接続可能でしょうか? もし、可能ならば開発環境、開発言語を教えていただければ幸いです。
- ベストアンサー
- SQL Server
- gin57773222
- 回答数1
- mdfファイルの残骸について
Microsoft SQL Server 2005 Developer Editionを使用しています。 SQL Server Management Studio > オブジェクトエクスプローラ > データベース に使用中のDB一覧が表示されています。 エクスプローラでmdfファイルが保存されているフォルダを確認すると 上記にないデータベース名のmdfファイルがあります。 以前、作成して削除したDBのmdfファイルです。 質問です。 (1)オブジェクトエクスプローラに表示されず、mdfファイルが残っているのはどういう状況でしょうか。 私はいつもSQL Server Management Studioで削除したいDBを選択して、右クリック>削除でDBを削除していますが、 mdfファイルが残ることもあるのでしょうか。 (2)ファイルサイズが非常に大きいため、上記状態のmdfファイルを削除したいのですが、 エクスプローラ上から削除しても問題ないのでしょうか。 削除前に「このmdfファイルは現在使用されていない」ことを確認したいのですが、 どのような方法があるのでしょうか。 前任者からDB管理を引き継いだのですが、上記状態で困っています。 既に前任者はいないため、聞くことが出来ません。 よろしくお願いします。
- ベストアンサー
- SQL Server
- kiiro3
- 回答数2
- SQL Server2008のクエリの書式に関する
SQL Server2008のクエリの書式に関する質問です。 異なるテーブルを結合をする際の列名は、以下のようにピリオドを使って表現します。 <テーブル名>.<列名> これは、皆さん当然のように使われていると思います。 ここから質問ですが・・・。 異なるデータベースのテーブルを結合させる場合は、どうすればよいですか? <データベース名>.<テーブル名>.<列名>とするのでしょうか?(やってみたが、うまくいかなかったような気が・・・。) そもそも、異なるデータベース間では、テーブル結合できないのでしょうか? ご指導よろしくお願いいたします。
- ベストアンサー
- SQL Server
- gin57773222
- 回答数2
- SQL SERVER2005でシフト表を出力したい
社員のシフト管理表を作成しています。 visual web developer2008とSQL Server2005にて社内で利用するWEBアプリを作成しています。 CSVにてエクスポートしたいという要件が出てきており、その抽出条件が私には難しくお知恵をお借りしたいと思い投稿いたしました。 予定テーブル(tbl_yotei)には日付と必要人数と場所が入っており、社員予定テーブル(tbl_shain_yotei)には予定IDと社員名が入っています。 ■予定テーブル(tbl_yotei) yotei_id jishi_day ninzu shiten 1 2011/7/1 2 支店A 2 2011/7/2 1 支店A 3 2011/7/3 3 支店A 4 2011/7/2 1 支店B 5 2011/7/3 2 支店B 6 2011/7/4 3 支店A ------ ■社員予定テーブル(tbl_shain_yotei) shain_yotei_id yotei_id shain_nam 1 1 田中 2 1 山根 3 2 杉下 4 3 田中 5 3 一条 6 4 魚島 これを予定テーブルの人数分の行を表示し、その行にアサインされている社員が表示される表を作成したくご質問いたしました。 まだアサインされていない予定については社員はnullで人数分の行を作成したいと思います。 入力時の制限として予定テーブルに入力されている「人数」よりも多い数の社員は割り当てていません。予定テーブルのある行の人数が2なら社員予定テーブルの行数は0~2行までです。 ストアドプロシージャで予定テーブルに入っている人数分の行を出力する事は出来たのですが、そこから社員予定テーブルを参照して下記のような表になるようにする方法がわかりません。 例えば tbl_yoeti.yotei_idが3のレコードは3行表示し、shain_yotei_id.yotei_idが3のレコードは2行あるので2行はshain_namに社員の氏名が入り、1行はshain_namがnullのレコードを表示させたいです。 yotei_id jishi_day ninzu shiten shain_yotei_id shain_nam 1 2011/7/1 2 支店A 1 田中 1 2011/7/1 2 支店A 2 山根 2 2011/7/2 1 支店A 3 杉下 3 2011/7/3 3 支店A 4 田中 3 2011/7/3 3 支店A 5 一条 3 2011/7/3 3 支店A Null Null 4 2011/7/4 1 支店B 6 魚島 5 2011/7/5 2 支店B Null Null 5 2011/7/5 2 支店B Null Null 6 2011/7/6 3 支店A Null Null 6 2011/7/6 3 支店A Null Null 6 2011/7/6 3 支店A Null Null ---- 出来ているストアドプロシージャ CREATE PROCEDURE dbo.StoredProcedure2 DECLARE @yotei_id int DECLARE @jishiday datetime DECLARE @ninzu int DECLARE @shiten nvarchar(50) DECLARE c_yotei cursor FOR SELECT yotei_id,ninzu,jishiday,shiten FROM tbl_yotei CREATE TABLE #TMP ( yotei_id int,ninzu int, jishiday datetime, shiten nvarchar(50) ) OPEN c_yotei FETCH NEXT FROM c_yotei INTO @yotei_id, @ninzu, @jishiday, @shiten WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @kaisu int SET @kaisu = 1 WHILE @kaisu <= @ninzu BEGIN INSERT INTO #TMP ( yotei_id,ninzu,jishiday,shiten ) VALUES ( @yotei_id,@ninzu,@jishiday,@shiten ) SET @kaisu = @kaisu + 1 END FETCH NEXT FROM c_yotei INTO @yotei_id, @ninzu, @jishiday, @shiten END CLOSE c_yotei DEALLOCATE c_yotei /* ここからどのようにしたらよいでしょうか。。 */ SELECT * FROM #TMP RETURN ---- 上記のストアドからでも全く新しいアイデアでもかまいませんので皆様お知恵をお貸しください。 どうかよろしくお願いいたします。
- ベストアンサー
- SQL Server
- cola_bakkari
- 回答数2
- SQL Serverでの検索時の文字の同一視
SQL Serverでの検索について教えてください。 【目的】 ・JAVAで作成した検索画面より、SQLServerのテーブルに対して検索をしたい。 ・フリガナ検索で、以下のルールを設けたい (1)カタカナ小文字(『ッ』『ャ』等)とカタカナ大文字(それぞれ、『ツ』『ヤ』)を区別せず、同一視したい (2)濁音(『バ』)・破裂音(『パ』)・清音(『ハ』)を区別せず、同一視したい (3)半角スペースと全角スペースを無視したい (4)アルファベット小文字(『a』等)とアルファベット大文字(『A』)を区別せず、同一視した ≪例≫ Aテーブル/フリガナ : ケンサク キョウダイ 検索ワード ・ケンサク キョウダイ(完全一致) ・・・ ○ ・ケンサク キヨウダイ(上記(1)) ・・・ ○ ・ケンサク キョウタイ(上記(2)) ・・・ ○ ・ケンサクキョウダイ(上記(3)) ・・・ ○ という結果にしたい。 【現時点】 ・照合順序をSQL文でしようしたら、 (2)は『AI』で対応できました。 (4)は『CI』で対応できました。 ・(3)はSQL文のWhere句に、半角スペースを無効にする『Replace』と全角スペースを無効にする『Replace』を記述することで対応できました。 ・(1)だけがどうしても対応できません。 →(3)の対応と同様に『Replace』での対応も可能なのですが、9つ程度(『ッ』『ャ』『ュ』『ョ』『ァ』『ィ』『ゥ』『ェ』『ォ』)追加しないといけないので、処理速度の低下が懸念点です。 どなたかいい方法をお持ちの方がいましたら、ご協力お願いいたします。 ■バージョン:10.50.1600.1 以上
- 締切済み
- SQL Server
- hokkey
- 回答数3
- SQLSERVERの接続方法を教えて下さい
Visual Studio C# Windows CE環境でSQLSERVERに接続する方法を教えて頂きたいです。 System.Data.SqlClient.SqlConnection cSqlConnection = new System.Data.SqlClient.SqlConnection("接続文字列"); cSqlConnection.Open(); とすると実行時にエラーになります。
- 締切済み
- SQL Server
- hideki21332000
- 回答数2
- 空白文字を含む文字列データの検索
検索したいデータに空白がある時空白のない検索文字列でlike検索して データがヒットするようにしたいです col1 NTTデ ー タ NTTデ - タ シ ス テ ム ズ NTTデ ー タ ク オ リ テ ィ 日立製作所 IBM このようなカラムのデータが入っているとします ※空白を含むデータや空白を含まないデータがあるとします これを select * from table1 where col1 like '%NTTデータシス%' とするとNTTデ ー タ シ ス テ ム ズが検索されるようにしたいと思っています。 replace関数を使って実現しようと思ったのですが SELECT REPLACE(col1,' ','') as col1 From table1 where col1 like '%システムズ%' これだとデータがヒットせず単純に表示するときに空白が削除されるだけです どうすれば空白を含むデータを検索することができるでしょうか できれば全角・半角両方を含む文字のデータでも検索できるようにしたいです SQLServer 2005を利用しています。
- ベストアンサー
- SQL Server
- tkwavek
- 回答数2
- 無駄に見える結合の回数を減らしたい
いつもお世話になります。 VisualStudio2005とSQLserver2008を利用しています。 現在、クライアント毎に宅配便の利用履歴を表示する機能を作成しています。 メインとなる宅配便マスタに複数のマスタを結合して表示しているのですが、処理が非常に遅くて困っています。 主要な原因は結合の多用だと考えているのですが、どう削減していいものかわかりません。 以下は実際のSQL文です。かなり長いので結合部分だけ抜き出しています。 Dim strSelect As String = "" strSelect &= " select CM.クライアント名 as クライアント," strSelect &= " CO13.汎用名称 as ターミナル," strSelect &= " CO2.汎用名称 as 内容," strSelect &= " CO6.汎用名称 as 便種," strSelect &= " CO7.汎用名称 as 運送業者," strSelect &= " AM1.エリア as 仕入エリア," strSelect &= " AM2.エリア as 請求エリア," For i As Integer = 1 To 8 strSelect &= " CO89_" & i & ".汎用名称 as サイズ" & i & ", " strSelect &= " CAST(FLOOR(TTm" & i & ".単価) as int) as 仕入単価" & i & ", " strSelect &= " CAST(FLOOR(TT" & i & ".単価) as int) as 請求単価" & i & ", " strSelect &= " TM.個数" & i & ", " strSelect &= " CAST(FLOOR(TTm" & i & ".単価 * TM.個数" & i & ") as int) as 仕入金額" & i & ", " strSelect &= " CAST(FLOOR(TT" & i & ".単価 * TM.個数" & i & ") as int) as 請求金額" & i & ", " Next strSelect &= " SM.社員名 as 担当" strSelect &= " from 宅配便マスタ as TM " strSelect &= " inner join (select * from クライアントマスタ union select * from 関連会社マスタ) as CM on TM.ClientNO = CM.ClientNO " strSelect &= " left outer join (select * from コードマスタ where 識別コード=00002) as CO2 on TM.内容NO = CO2.汎用コード" strSelect &= " left outer join (select * from コードマスタ where 識別コード=00006) as CO6 on TM.便種 = CO6.汎用コード" strSelect &= " left outer join (select * from コードマスタ where 識別コード=00007) as CO7 on TM.運送業者 = CO7.汎用コード" strSelect &= " left outer join (select * from コードマスタ where 識別コード=00013) as CO13 on TM.ターミナル = CO13.汎用コード" For i As Integer = 1 To 8 strSelect &= " left outer join (select * from コードマスタ where 識別コード=00008 or 識別コード=00009)" strSelect &= " as CO89_" & i & " on TM.サイズ" & i & " = CO89_" & i & ".汎用コード" Next For i As Integer = 1 To 8 strSelect &= " left outer join (select * from 宅配便タリフ where ClientNO = '" & FlexI & "') as TTm" & i & "" strSelect &= " on TM.仕入エリア = TTm" & i & ".エリア and TM.便種 = TTm" & i & ".便種 " strSelect &= " and TM.運送業者 = TTm" & i & ".運送業者 and TM.サイズ" & i & " = TTm" & i & ".サイズ" strSelect &= " and TM.出荷日 >= TTm" & i & ".適用開始 and TM.出荷日 <= TTm" & i & ".適用終了" Next For i As Integer = 1 To 8 strSelect &= " left outer join 宅配便タリフ as TT" & i & " on TM.ClientNO = TT" & i & ".ClientNO and TM.請求エリア = TT" & i & ".エリア" strSelect &= " and TM.便種 = TT" & i & ".便種 and TM.運送業者 = TT" & i & ".運送業者 and TM.サイズ" & i & " = TT" & i & ".サイズ" strSelect &= " and TM.出荷日 >= TT" & i & ".適用開始 and TM.出荷日 <= TT" & i & ".適用終了" Next strSelect &= " left outer join エリアマスタ as AM1 on TM.仕入エリア = AM1.コード" strSelect &= " left outer join エリアマスタ as AM2 on TM.請求エリア = AM2.コード" strSelect &= " inner join 社員マスタ as SM on TM.社員ID = SM.社員ID" strSelect &= " left outer join 都道府県マスタ as TDM on TM.都道府県 = TDM.コード " strSelect &= " where " & strWhere strSelect &= " order by TM.ClientNO, TM.出荷NO, TM.出荷日" Return strSelect 明らかに無駄と思える箇所としては、佐川急便が一つの伝票で8種類までの重量区分を一度に処理できる形態を取っているため、 サイズ1~8、仕入単価1~8、請求単価1~8を求めるために同じマスタを8つずつ結合する羽目に陥っているところが挙げられますが……。 よい方法がありましたら、是非お知恵を拝借したいと思います。 お手数をおかけしますが、よろしくお願いします。
- ベストアンサー
- SQL Server
- souhikaru
- 回答数2
- SQLSERVERの使用メモリの増大について
SQLServer2008+vb.netでアプリケーションを作成しています。 このアプリケーションは定期的に何度も実行しますが、 タスクマネージャで確認すると SQLServer2008の使用メモリがどんどん増大しているように見えます。 http://blog.livedoor.jp/akf0/archives/51220274.html などを見て、データバッファキュシュかなと思いましたが、 作ったアプリケーションの処理件数などは、特に毎回増大しているわけでは ないので、どんどん増えていくのはおかしいなと思いました。 なにか原因の可能性があれば、教えて頂きたくお願いいたします。
- 締切済み
- SQL Server
- p16aimar22
- 回答数1
- SQLServerMangementStudio
SQL Server Mangement Studioを使って開発をしているのですが データの新規登録や編集をinsert文やupdate文を使わずに GUIでデータを入力して追加登録や編集を行う方法はないでしょうか insert文やupdate文をいちいち作ってデータを挿入していたのでは 時間がかかります。 SQL Server Mangement Studioの機能でそういった事をする方法を 具体的に教えてください。 仕様しているソフトは下記になります sql Server management studio 9.0.0 SQL server 2005
- ベストアンサー
- SQL Server
- tkwavek
- 回答数3
- SQLストアド INSERTの質問です
仕入データから、最後に仕入した商品毎の単価をテーブルにINSERTしたい 仕入日 商品コード 単価 数量 金額 5/1 001 150 1 150 5/2 002 160 1 160 5/3 001 145 1 145 5/4 001 146 1 146 5/20 002 170 1 170 上記のような仕入データから商品コード単位の最終@の テーブルを作成したと思います 商品コード 最終仕入@ 001 146 002 170 宜しくお願い致します
- ベストアンサー
- SQL Server
- kirin4247
- 回答数1
- SQLSERVER 連番更新について
<環境>SQLSERVER 一時ワークテーブルのフィールドに指定した番号以降の連番を更新したいのですが、 クエリーで更新する方法はありますか? 例) <更新前のテーブル> コード 名前 連番 001 AAA null 002 BBB null 003 CCC null <更新後のテーブル> 15以降の連番を更新する コード 名前 連番 001 AAA 15 002 BBB 16 003 CCC 17
- ベストアンサー
- SQL Server
- noname#208236
- 回答数2
- SQL上位n件ORDERBY 以降ORDERBY
SQLのORDER BYについてご教授いただけますでしょうか。 例えば、10件のデータのうち、5件を指定のORDERBYで抽出し、 残り5件をORDERBYで抽出するということは可能でしょうか。 ID 名前 システムフラグ 1 AAA 1 2 BBB 1 3 CCC 1 4 DDD 1 5 EEE 1 6 FFF 2 7 GGG 2 8 HHH 1 9 III 1 10 JJJ 1 上記のようなデータがあった場合、 以下のように抽出されるようにしたいと思っています。 ID 名前 システムフラグ 1 AAA 1 2 BBB 1 3 CCC 1 6 FFF 2 7 GGG 2 4 DDD 1 5 EEE 1 8 HHH 1 9 III 1 10 JJJ 1 システムフラグが2が入っているものは、 5件からの4,5件目に表示されるようにして、 それ以降はIDの昇順で表示されるようにしたいと思っております。 5件というのは、決め打ち5件ではなく、条件によっては変わるのですが、 5件が7件となった場合は、6,7件目がシステムフラグ2のものがくるようにしたいです。 指定した件数から下2つ目がシステムフラグのものが取得したいということです。 わかりにくいと思いますが、どのようなSQLを書けば抽出できるか ご教授いただけますでしょうか。 どうぞ宜しくお願い致します。
- ベストアンサー
- SQL Server
- tamanegin
- 回答数2