SQL Server
- 複雑なSELECT文について
ID 名前 日付 点数 合格日 ------------------------------------------------------------------- 1 太郎 2007/4/1 80 合格 2 太郎 2007/4/2 90 合格 3 太郎 2007/4/3 100 合格 4 花子 2007/4/5 20 不合格 5 太郎 2007/4/5 30 不合格 6 花子 2007/4/6 100 合格 7 太郎 2007/4/7 40 不合格 8 花子 2007/4/7 100 合格 上のようなテーブルから、太郎と花子が最初に合格した日の情報を 取得するようなSELECT文は可能でしょうか? 結果として望むのは以下になります。 ID 名前 日付 点数 合格日 --------------------------------------------------------------------- 1 太郎 2007/4/1 80 合格 6 花子 2007/4/6 100 合格 どなたかご教授願います。
- ベストアンサー
- SQL Server
- merci7777
- 回答数4
- .NetFrameWork2.0のインストールについて
.NetFrameWork1.1インストール済みでWebアプリケーション(vb.net2003)が稼動中のWindows2003Serverがあります。 このServerに.NetFrameWork2.0が必要なWindowsアプリケーション(vb.net2005)のプログラムをインストールしたいのですが・・・・。 (1)既に動いているWebアプリケーションに影響はないでしょうか? (2).NetFrameWork2.0をインストールするとServerの再起動が必要になるでしょうか? よろしくお願いいたします。
- 締切済み
- SQL Server
- G00000000D
- 回答数1
- CASE文の使用
例) SELECT A.aaa , B.eee , C.fff FROM ○○○ A LEFT JOIN ▲▲▲ B ON B.aaa = A.aaa LEFT JOIN □□□ C ON C.aaa = (CASE WHEN C.bbb =0 THEN A.aaa ELSE A.ccc) WHERE A.eee > 0 の様なSQL文を発行して、 クエリアナライザの実行プランを確認すると、 □□□ にソートが掛かり、 非常にレスポンスの悪いSQLになります。 ソートが原因か分かりませんが、 良い解決策はないでしょうか?
- 締切済み
- SQL Server
- ddaaii
- 回答数2
- 過去の質問を見て分からなかったSQL文があります
お世話になります。 過去の質問の中で、文法が分からないものがあったので、教えてください。 [QNo.1118130] 全テーブルのデータの行数 という質問の中のNo.1の方の回答で次のようなSQL文がありました。 -------------------------------------------------------------------------------------- DECLARE @name nvarchar(30) DECLARE @sql nvarchar(200) DECLARE TCUR CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U' OPEN TCUR FETCH NEXT FROM TCUR INTO @name -----・・・(1) WHILE (@@fetch_status <> -1) BEGIN SET @sql = 'SELECT count(*),''' + @name + ''' AS TNAME FROM '+ @name -----・・・(2) EXEC(@sql) FETCH NEXT FROM TCUR INTO @name -----・・・(3) END CLOSE TCUR DEALLOCATE TCUR -------------------------------------------------------------------------------------- (1)の部分について "INTO @name"の部分で、@name には何を入れているのでしょうか? (2)の部分について 最初の 'SELECT count(*),'の部分は分かるのですが、これ以降で"'(シングルクォーテーション)"が沢山あって、何を囲っているのか分かりませんでした。 ("'"が多用されていて分かりませんでした) (3)の部分について (1)と全く同じ文ですが、(1)と(3)でやっていることは違うのでしょうか。 すみませんが、アドバイスお願いします。
- ベストアンサー
- SQL Server
- kansainopg
- 回答数1
- 関数の実行について
AccessからSQL Server2005へ作り変えています。 質問させていただきます。 テーブル名「伝票」の中身 製品 在庫数 注文数 A 12 10 B 11 13 C 16 11 このテーブルから在庫数と注文数を比較して、 注文数が在庫数以内の場合は・・・OK 注文数が在庫数以上の場合は・・・NG イメージとしては以下のようにななります。 製品 在庫数 注文数 判定 A 12 10 OK B 11 13 NG C 16 11 OK これをAccessのクエリで表現する場合は、判定にVBAを使っています。 (テーブルに判定という項目はありません) SQL Server2005ではスカラ値関数を作って、それをストアドプロシージャで 呼び出せば可能ですよね・・・? そこで以下の悪戦苦闘しながら以下のスカラ値関数を作りました。 ALTER FUNCTION dbo.HANTEI (@ZAIKO int, @TYUMON int, @HANTEI nvarchar(2)) RETURNS nvarchar(2) AS BEGIN IF @ZAIKO >= @TYUMON SET @HANTEI = 'OK' ELSE SET @HANTEI = 'NG' RETURN @HANTEI END これをストアドプロシージャで実行すると、パラメータで指定したHANTEI がテーブルにないので エラーになります。テーブルに判定に相当する項目を用意すると正しく結果が出ます。 テーブルに判定項目を用意せずに正しい結果を出したいのですがどうすればよいですか? よろしくお願いします。
- ベストアンサー
- SQL Server
- pon_s
- 回答数1
- 9時間の時間のずれ
パッケージのセキュリティソフトを使用しており、ログがSQL ServerのDBに入るようになっています。 セキュリティソフトからログを参照するときはログの日時が実際の正しい時間になっていますが、データベースのテーブルを直接参照すると実際の時間とは9時間ずれた時間で登録されているようです。 SQLでデータベースから直接データを取り出すことをしたいのですが、このときにこの9時間のズレを直す方法がないでしょうか? 条件で今月分のログをSQLで取り出そうとしても9時間のズレがあるため本来の1ヵ月分とはずれた形で抽出されてしまいます。 よろしくお願いします。
- 締切済み
- SQL Server
- satton99
- 回答数1
- SQLServer2000はなにで勉強しましたか?
SQLServer2000を使って開発をしております。 他のデータベースに比べるとSQLServer2000は情報量が少ない気がするのですが、そんなことはないでしょうか? 皆さんのお勧めの書籍やWebサイトがありましたら教えていただきたいです。
- 締切済み
- SQL Server
- Cosmo2007
- 回答数4
- SQLServer2005 でSELECTを実行した結果(クエリ結果)がSQLServer2000の時の2倍の大きさになる
SQLServer2005 でSELECTを実行した結果(クエリ結果)をファイルに出力したところ、同じデータベース項目をSQLServer2000 でSELECTした結果の2倍程度の大きさになる。 ファイルダンプを採取して中身をみたところ、UNICODEでファイル出力されており、すべての半角文字が2バイト表記されていたため、SQLServer2000(こちらは半角文字は1バイト)のほぼ2倍の大きさになっている事が分かりました。 SQLServer2005 でSELECTを実行した結果(クエリ結果)を半角文字は1バイトで出力する良い方法をご存じの方、ご教示いただけないでしょうか?
- 締切済み
- SQL Server
- KURO_0720
- 回答数2
- ユーザー関数を作成したいのですが
sqlserver2005の初心者です いままでaccessで標準モジュールにユーザー関数を作成していました Function 年齢(SEI) As Integer Dim SEIDATE, HONSEI, UNSEI, HONY, HONM, UPD Dim MH, DH As Integer MH = 0: DH = 0 SEIDATE = DateValue(SEI) If Not IsDate(SEI) Then Exit Function UPD = DateSerial(Year(Date), Month(Date), Day(Date) + 1) If Val(Mid(SEIDATE, 6, 2)) > Val(Mid(Date, 6, 2)) Or (Val(Mid(SEIDATE, 6, 2)) = Val(Mid(Date, 6, 2)) And Val(Right(SEIDATE, 2)) > Val(Right(Date, 2))) _ Or Right(Date, 5) = "12/31" Then MH = 1 HONY = DateValue(DateSerial(Year(SEIDATE) + MH, Month(Date), Day(UPD))) UNENREI = DateDiff("YYYY", HONY, UPD) 年齢 = UNENREI '-------------SYAIN990112年齢勤続クエリー用------------------ If Val(Right(SEIDATE, 2)) > Val(Right(Date, 2)) Then DH = 1 HONM = DateValue(DateSerial(Year(Date) - MH, Month(SEIDATE) + DH, Day(UPD))) UGETUREI = DateDiff("M", HONM, UPD) HONSEI = DateValue(DateSerial(Year(Date), Month(Date) - DH, Day(SEIDATE))) UHIREI = DateDiff("D", HONSEI, UPD) End Function 宣言がない変数はpublic変数を設定しています ここに例 s33/10/05の生年月日を飛ばして戻り値をえています sqlserverで作成する場合テーブル関数なのかスカラ関数なのかわかりません、 余計な部分ははぶいていただいて簡単でけっこうですのでsqlserverでの記述をおしえていただけないでしょうか
- 締切済み
- SQL Server
- hiyotom
- 回答数1
- insert into select で別テーブルのID分挿入したい
SQLでこんなことは可能でしょうか。 列 IDとTEXT をもつテーブルA と、 列 IDをもつテーブルBがあります。 テーブルAに、テーブルBのID分のデータを挿入したいです。 TEXTはテーブルAのID=1のTEXTデータを全ての列に挿入します。 このような場合のSQL文を調べてるのですが、 なかなかわからなくて困っています。 insert into select b.id,a.text from tableA as a, tableB as b でもうまくいきませんでした。 何かいい方法はないでしょうか? 回答お待ちしております。
- ベストアンサー
- SQL Server
- HAWAI777
- 回答数5
- select条件で文字列項目のあいまい検索
SQLServerにてselect文のあいまい検索についての質問です。 char型項目を以下のようにあいまい検索したいのですが、どのように条件を書けばいいのでしょうか? A項目 ----- (1) 21234 (2) 256 (3) 27890 (4) 2 (5) 2378 とデータがあるとします。 結果、(1)と(3)のみ対象としたいのです。 先頭1桁が'2'のものを対象にしたいのですが、 LIKE '2____'とすると、全てselectされてしまいます。 他に方法ありますか?
- ベストアンサー
- SQL Server
- kuriosprj
- 回答数6
- SQL文の書き方
SQL文の書き方を教えて下さい。 以下の2つのクエリー(1のクエリー&2のクエリー)を1つのクエリーで1度に抽出をかけたいのですがSQL文の書き方がわかりません。 データの発生条件としては TableBのField1は必ずTableAのField1に存在するという条件です。 TableAのField1が「AAA」から「EEE」まである場合は、TableBのField1も必ず「AAA」から「EEE」の範囲内で発生します。 よろしくお願い致します。 1のクエリー ---------------------------------------------------------------- TableA Field1 ---------------------------------------------------------------- AAA AAA AAA BBB BBB CCC DDD DDD EEE EEE EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableA.Field1) as RecCount, TableA.Field1 From TableA 結果 RecCount Field1 3 AAA 2 BBB 1 CCC 2 DDD 3 EEE ---------------------------------------------------------------- 2のクエリー ---------------------------------------------------------------- TableB Field1 ---------------------------------------------------------------- BBB CCC CCC EEE ---------------------------------------------------------------- Field1をサマライズしてカウントと名称を取得するクエリー Select Count(TableB.Field1) as RecCount, TableB.Field1 From TableB 結果 RecCount Field1 1 BBB 2 CCC 1 EEE ---------------------------------------------------------------- 希望する結果 TableAのRecCount TableBのRecCount TableAのField1 3 AAA 2 1 BBB 1 2 CCC 2 DDD 3 1 EEE
- ベストアンサー
- SQL Server
- SRL311
- 回答数1
- VISTAにMSSQL2000をインストール
VistaBusinessEditionに、少し古いですが、MSSQL2000をインストールしたいのです。ところが、インストールは途中で終わって居ます。しかし、スターチメニューからはEnterPriseManagerは起動し、サービスも動いている状況です。 ところが、ローカルのデータベースに接続できないようなのです。 まだ、Vistaの経験が浅いのですが、特別な設定が必要でしょうか?
- 締切済み
- SQL Server
- durian_sk
- 回答数1
- SQLSERVERデータをエクセルデータに読み込む方法を教えてください
下記のコードにてエクセルでデータベースに接続しようとするのですが、どうしてもうまくいきません。開きたいデータベースは”sekisan.mdf”という名前です。現在はローカルPCにて接続したいとかんがえております。 何かおかしな点があったらご教授願います。それから、逆にエクセルデータをSQLSERVERの既存のデータに書き出すことって可能でしょうか? cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);" & _ "Initial Catalog=sekisan;Integrated Security=SSPI;"
- 締切済み
- SQL Server
- ganmo0122
- 回答数1
- SQL Server 2005 Express Editionでのデータベース作成
下記の記事を参考にVS2005を用いてSQLデータベースを作成しようとしたのですが、図2のMyDB.mdf作成の時に ユーザー'******'はログインできませんでした と出て作成できなくて困っています。 どなたか解る方居ましたらお願いします。 参考情報 ・サービスでSQL Server(SQLEXPRESS)が起動していることを確認済み ・OSはVista HomePremiumを使用 ・別PCのVistaBusinessでは作成できました ・SQLEXPRESS SP2は当ててあります
- 締切済み
- SQL Server
- yami33
- 回答数3
- SQLServer2005でSELECTした結果(クエリ結果)をS-JISで出力する
SQLServer2005でSELECTした結果(クエリ結果)をファイル出力した場合、UNICODEで出力されてしまいます。 S-JISで出力する方法をご存じの方、ご教示いただけないでしょうか?
- 締切済み
- SQL Server
- KURO_0720
- 回答数1
- SELECT文で列名指定して桁あわせしたい(符号付数字項目)
以前にも同じような質問をしましたが、少し異なります。 SQLServerでSELECT文を発行した場合です。 列名をいくつか指定し、そのうちの1つの列名の桁数をあわせたいのですが良い方法はないですか? select A,B,C from xxtbl 例えばc列が符号付数字項目(decimal)だったとします。 出力を8桁にしたい。 値が”-12”の場合に" -12”としたいのです。 mataha, " 12-"でもいいのですが。
- ベストアンサー
- SQL Server
- kuriosprj
- 回答数1
- 片方のテーブルにないデータを取り出す
お世話になります。 SQL文についてちょっと助けてください。 テーブルA Aキー(主) テーブルB Bキー(主) Aキー テーブルBからBキーを取り出すとき、AキーでテーブルAを見に行って存在しない場合のBキーだけを取り出したいのです。 一度のSQL発行で可能でしょうか。
- ベストアンサー
- SQL Server
- utugi_taro
- 回答数1
- SELECT文で列名指定して桁あわせしたい
SQLServerでSELECT文を発行した場合です。 列名をいくつか指定し、そのうちの1つの列名の桁数をあわせたいのですが良い方法はないですか? select A,B,C from xxtbl 例えばc列が8桁charだったとします。 値が”0”の場合に”00000000”としたいのです。 format指定みたいのはないですか?
- ベストアンサー
- SQL Server
- kuriosprj
- 回答数1
- accessのSQL
accessのフォーム上において、サブクエリを元データとして使用し 顧客別に受注合計、入金合計を出させ、売掛金残高を表示させました。次に受注ID毎の売掛金残高を、顧客別に集計させて売掛金残高合計を出したいのです。 元データはどこから引っ張ってくればよいのでしょうか? ちなみに受注合計の計算式には売上数量毎に割引率が異なります。 ご教示のほどよろしくお願い申し上げます。
- 締切済み
- SQL Server
- fragirl
- 回答数1