- 締切済み
毎回変わる列名からの集計
ストアドプロシージャから列を動的に作成するテーブルがあるのですが、 そのテーブルを別のプロシージャ内で集計を行いたいのです。 ##TEMPテーブル ID,3/1,3/5,3/16,3/24 1000,1,4,3,4 1001,2,3,4,2 1002,1,2,1,2 (月日の列の部分が動的に変わります) このテーブルともうひとつあるT_顧客が IDでつながっているとして T_顧客のなかの顧客名だけ表示してあとは##TEMPの 内容をすべて表示したい場合どういったSQLにすればよいか もしヒントでもよろしいですので なにかご教授いただけますと幸いです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- utakataXEX
- ベストアンサー率69% (711/1018)
関連するQ&A
- クロス集計で、列を動的に
SQLserverでのクロス集計についてご質問ですが、 クロス集計後の結果、列を動的に変更させる必要がある場合、ストアドプロシージャで処理しなければならないかとは思うのですが、 例えば T_売上 番号,日付,数 1,2004/09/10,10 1,2004/09/14,20 1,2004/09/18,10 2,2004/09/10,20 2,2004/09/14,20 3,2004/09/18,10 を 番号,2004/09/10,2004/09/14,2004/09/18 1,10,20,10 2,20,20,0 3,0,0,10 という形に出力したいときは、具体的にどういう手順でSSQLを作成していけばよろしいでしょうか。 (日付部分が動的に増えたり減ったりします)
- ベストアンサー
- SQL Server
- T-SQLで一時テーブルの名前を毎回変更できるストアドを作りたい
お世話になります。 初歩的な質問で恐縮ですがご教示いただければ幸いです。 T-SQLでグローバル一時テーブルの名前を毎回変更できるストアドを作り、Access2003アプリから実行させる予定です。 ストアドに、CREATE TABLE [dbo].[@tablename]のように書き、 ストアド実行時に@tablenameの値を ##ABC のように入力したのですが、テーブルはtempdbではなく、しかもテーブル名は@tablenameでテーブルが作成されてしまいます。 CREATE TABLE [dbo].@tablename のように[]をとると ストアド自体を作成できずエラーになってしまいます。 宜しくお願いします。 create PROCEDURE [dbo].[ストアドプロシージャー名] (@tablename nvarchar(255)) AS BEGIN from SET NOCOUNT ON; CREATE TABLE [dbo].[@tablename] <以下省略>
- 締切済み
- SQL Server
- MySQLでの集計
いつもお世話になっております。MySQLを利用しておりまして質問です。 同じ構成のテーブルが5つあり、選択されたテーブルを集計するSQLを作成しています。 カラムを簡単に構成を書くと ID、名前、ステータス1、ステータス2 のような形です。 テーブル1、2、3が選択された場合 テーブル1と2でIDの重複のない一覧を作成し、IDが被っていた場合はステータスをそれぞれ大きいほうを保持するようにします。 そして次にテーブル1、2を合わせたテーブルとテーブル3で同じように集計をしたいのですが、ここがうまく出来ません。 実際の環境ではなく簡素化したものなのでおかしな点があるかもしれませんがこのようになっています。 SELECT TTT1.id,TTT1.名前,TTT1.st1,TTT1.st2 FROM( SELECT id,名前,ステータス1 as st1,ステータス2 as st2 FROM( SELECT * FROM テーブル1 T1 WHERE T1.id NOT IN(SELECT T2.id FROM テーブル2 T2) UNION All SELECT * FROM テーブル2 T2 WHERE T2.id NOT IN(SELECT T1.id FROM テーブル T1) ) as TT1 UNION SELECT id,名前,st1,st2 FROM( SELECT T1.id,T1.名前, (CASE T1.ステータス1 or T2.ステータス1 WHEN "2" THEN "2" WHEN "1" THEN "1" WHEN "0" THEN "0" ELSE null END) as st1, (CASE T1.ステータス2 or T2.ステータス2 WHEN "2" THEN "2" WHEN "1" THEN "1" WHEN "0" THEN "0" ELSE null END) as st2, FROM テーブル1 T1,テーブル2 T2 WHERE T1.id = T2.id AND NOT(T1.st1 IS null AND T1.st2 IS null AND T2.st1 IS null AND T2.st2 IS null) ) as TT2 )as TTT1 /* UNION ALL SELECT id,名前,st1,st2 FROM (TTT1とテーブル3を比較したもの)as TTT2 */ /**/で囲ったところでTTT1が呼び出せれば、テーブル1のところをTTT1にし、テーブル2をテーブル3にすれば出来ると思うのですが、そういうことは無理なのでしょうか? また集計するテーブルの数が不特定なので一つずつ集計をする形を取りましたが、 もっとこういう風にやればいいと言う方法はございますでしょうか? よろしくお願いいたします。
- ベストアンサー
- MySQL
- 集計するためのSQL構文を教えて下さい。
初めて投稿します。よろしくお願いします。 現在、ストアドプロシージャとSQLの勉強をしながら作業を行なっています。そのため説明不足などありましたらご指摘願います。 [環境] データベース:SQLServer2005 SQL作成環境 :SQLServerManagementStudioExpress(9.00.2047.00) 望んでいる出力結果 病室,タイプ,10/01水,10/02木,10/03金,10/04土,10/05日 -------------------------------------------------------------- 10,集合3,○○太郎,○○太郎,○○太郎,○○太郎,□□花子 △△太郎,△△太郎,□□花子,□□花子 □□花子,□□花子 11,個室A, ××太郎,××太郎,××太郎 12,個室B, ○○次郎,○○次郎,○○次郎,○○次郎 ※指定した日付範囲で、全病室を対象に入院中患者、入院予定患者を 病室単位で求めたいです。 関係するテーブル情報 ※マスタテーブルは、名称+Mで表記します。 ※データテーブルは、名称+Tで表記します。 [病室] 病室M( 病室番号 INT タイプコード INT ) [日付] ストアドのパラメータで集計開始日と終了日を受け取るため、 その集計範囲も動的に変わります。 ※上記の結果では、 集計日(自):2008/10/01 集計日(至):2008/10/05 を受け取った場合を想定し記述しています。 [入院者氏名] 患者T( 患者コード INT 患者氏名 VARCHAR(128) 通院種別 TINYINT(1:通院,2:入院) 退院区分 TINYINT(1:入院,2:退院) 入院日 SMALLDATETIME 退院日 SMALLDATETIME ) [患者と病室を紐付けるテーブル] 病室割当T( 割当番号 INT 患者番号 INT 病室番号 INT ) 長文となり申し訳ありません。 上記の情報でストアドを組もうとしているのですが、 SQL含め勉強不足な状態です。 実現するための考え方、方法、アドバイス等を頂きたいです。 よろしくお願い致します。
- ベストアンサー
- SQL Server
- このような結果が得られるSQL文はどのように書けばいいのでしょうか?
お世話になります。 どなたかご教授下さい。 下記のようなテーブルが2つあります。 table1 ・customer_id ・fromdate ・todate table2 ・customer_id ・executedate ・amount やりたいことは、顧客([customer_id])ごとに集計期間(executedate between [fromdate] and [todate])が異なるのですが、 その顧客ごとの集計期間内における総数(sum([amount])を出したいのです。 ただ、どのようにSQLを書けばいいのか検討がつかないので、どなたかご教授いただければなと思います。
- 締切済み
- SQL Server
- SQLの実行速度
XMLを解析し、テーブル内を検索するシステムを 作成しているのですが、 ストアドプロシージャ内でSQL文を作成し実行するのと ASP.NET などからSQL文を作成して実行するのとでは、 実行速度に差はでるのものなのでしょうか。 ・SQLServer 2005 ・SELECT の対象テーブルは2~3つのテーブルをINNER JOIN して使う。 ・検索対象の列は実行のたびに異なる。 よろしくおねがいします。
- ベストアンサー
- SQL Server
- Access2003 クロス集計クエリでの合計
☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== (テーブル(1)) [ID] [A] [B] [C] 1 111 英語 10 2 222 英語 20 3 333 数学 30 4 111 国語 40 5 222 数学 50 6 333 国語 60 7 222 国語 70 8 333 英語 80 9 111 数学 90 =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、 フィールド[B]を列見出しに設定、 フィールド[C]を集計する項目に設定する。 (2) フィールド[C]の値を列ごとに平均を計算し、 行ごとに合計を計算する。 ※ 列と行で、それぞれ集計した値を表示する ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ =========================================== [クロス集計結果] 合計 英語 国語 数学 111 140 10 40 90 222 140 20 70 50 333 170 80 60 30 --------------- 平均 150 36 56 56 =========================================== ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- ストアドプロシージャでcsvファイルへデータにエクスポート
いつも勉強させていただいています。 ストアドプロシージャの勉強をし始めて間もない素人ですがよろしくお願いします。 SQL-server2005でテーブルをCSVファイルに、ストアドプロシージャを使ってそのままエクスポートする、と言うことをやっています。 以下作成したストアドプロシージャです。 ******************************************* CREATE PROCEDURE [ストプロ名] AS DECLARE @command VARCHAR(200) BEGIN SET @command = ' bcp [データベース名].[スキーマ].[テーブル] out C:\XXXX\aaa.txt -PXXXXXX -UXXXXXX -SXXXXXX' EXECUTE master.dbo.xp_cmdshell @command END **************************************** 解析ボタン、実行ボタンをクリックしてもエラーは出ません。 「ストアドプロシージャの実行」を選択して実行させても、 アラーは表示されず、ファイルも作成されません。 xp_cmdshell が有効になるように設定もしました。 残念ながら検討すらつかない状態です。ぜひご教授お願いします。
- ベストアンサー
- SQL Server
- クエリビルダで列名を変数にしたいが
VisualStudio2010でwebアプリを作成しています。 クエリビルダでSQL文を作成しSQLサーバにアクセスしています。 このSQL文でわからない点があります。 列1、列2、列3のフィールドを持つテーブルがあるとします。 ドロップダウンリストで選択した項目により、ある時は列1だけ取得し ある時は列2だけ取得し、ある時は列3だけ取得する様なSQL文を作りたいのですが、どうすればよいかわかりません、列名を変数にできればよさそうなんですが、そんなことできますか? ある時は SELECT 列1 FROM table1 ある時は SELECT 列2 FROM table1 ある時は SELECT 列3 FROM table1 としたいので SELECT @列名 FROM table @列名は変数のつもりです。 このようにできればよいと思っていますが・・・ よろしくおねがいします
- 締切済み
- SQL Server
- ジョブでvbsを起動する方法
ジョブでバッチ処理を作成していますが、テーブルからある数式を文字列として取得し、文字列内にある変数を実際の値と置き換え、それを数式として処理する必要があります。 T-SQLにはその機能がないため、vbsのEVAL関数を使って処理しようと考えています。 テーブルから取得した数式を直接SQL文に記述し、「数式 AS フィールド名」として取得しようとも考えましたが、数式に^(べき乗)が存在し、数式をT-SQLに変換することが複雑になってしまうため、あきらめました。 SQLServerのジョブ(もしくはストアドプロシージャ内)からパラメータを与えてVBSを実行させ、VBSより結果を返してもらうコーディング(設定)はどうすればできるのでしょうか?
- ベストアンサー
- SQL Server
- Brother DCP-J552Nを無線LANに設定した後、印刷ができないエラーが発生しています。取説に従って設定を行ったが、なぜか無線で印刷ができません。再起動や電源の入れ直しを行っても改善されず、ネットワーク設定情報に<Wireless Statistics> RX Frames Error 14, TX Frames Error 0というエラーコードが表示されます。
- Windows環境で使用しているBrother DCP-J552Nを無線LANに接続しましたが、印刷ができない問題が発生しています。設定は取説に従って行ったが、再起動や電源の再接続を試しても解決されません。ネットワーク設定情報にエラーコードが表示されています。
- 無線LANに設定したBrother DCP-J552Nで印刷ができません。設定は取説通りに行いましたが、再起動や電源の再接続を行っても改善されません。ネットワーク設定情報にエラーコードが表示されています。