teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

回答を受けコード修正した後の追加質問

2019/04/12 04:08

投稿

agawa
agawa

スコア14

title CHANGED
File without changes
body CHANGED
@@ -63,6 +63,35 @@
63
63
  [参照サイト1](http://uyan39.hatenablog.com/entry/20120721/1342893081)
64
64
  [参照サイト2](https://webbibouroku.com/Blog/Article/forxmlpath)
65
65
 
66
+ ### 追加情報
67
+ hihijijiさんのアドバイスを受け、以下の通り修正したところエラー出ず動きました。
68
+ ("," を ','に修正し、DataIdがint型なのでstr型にキャストしました。)
66
- ### 補足情報(FW/ツールのバージョンど)
69
+ ただ、実行結果が想定と異っている状態で、引き続き困っております。
67
70
 
71
+ 現在の実行結果
72
+ |出身|性別|人数|DataId|
73
+ |:--|:--:|--:|
74
+ |東京|男|2|001,002,003,004,005,006,007,008|
75
+ |東京|女|1|001,002,003,004,005,006,007,008|
76
+ |大阪|男|1|001,002,003,004,005,006,007,008|
77
+ |大阪|女|2|001,002,003,004,005,006,007,008|
78
+ |愛知|女|2|001,002,003,004,005,006,007,008|
79
+
80
+ 全てのDataIdを連結してしまっている状態です。
81
+ 自分自身とテーブルでサブクエリを組んでるので当たり前の結果のような気もしていますが
82
+ どのようにすればほしい結果が得られるのか考えつかない状態です。
83
+ クエリの組み方や他の方法などあればアドバイスいただけませんでしょうか。
84
+ よろしくお願いします。
85
+
86
+ ### 該当のソースコード(hihijijiさんのアドバイス後)
87
+ SELECT
88
+ tA.出身
89
+ ,tA.性別
68
- ここにより詳細な情報を記載してく。」
90
+ ,COUNT(tA.氏名) AS 人数
91
+ ,(SELECT STR(tB.DataId) + ','
92
+ FROM テーブル1 AS tB
93
+ WHERE tB.DataId = tA.DataId
94
+ FOR XML PATH('')
95
+ ) AS DataId
96
+ FROM テーブル1 AS tA
97
+ GROUP BY tA.出身,tA.性別

2

リンク先の内容を修正しました。

2019/04/12 04:08

投稿

agawa
agawa

スコア14

title CHANGED
File without changes
body CHANGED
@@ -58,11 +58,10 @@
58
58
 
59
59
  過去ログや他サイトなど参照し以下でできそうだったので実装しましたが
60
60
  上記のエラーで詰まってしまっています。
61
- ↓過去ログ
62
- [リンク内容](https://teratail.com/questions/156977)
61
+ [過去ログ](https://teratail.com/questions/156977)
63
62
  ↓過去ログにあったリンク先
64
- [リンク内容](http://uyan39.hatenablog.com/entry/20120721/1342893081)
63
+ [参照サイト1](http://uyan39.hatenablog.com/entry/20120721/1342893081)
65
- [リンク内容](https://webbibouroku.com/Blog/Article/forxmlpath)
64
+ [参照サイト2](https://webbibouroku.com/Blog/Article/forxmlpath)
66
65
 
67
66
  ### 補足情報(FW/ツールのバージョンなど)
68
67
 

1

・URLをリンクに修正しました。・曖昧な表現があったので修正しました。

2019/04/12 03:19

投稿

agawa
agawa

スコア14

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,7 @@
3
3
  以下のようなテーブルがあり、出身と性別で集約してそこに含まれるデータ数(人数)を取得し、
4
4
  さらに最終的に別処理で利用するため集約したデータのDataIdを取得したいです。
5
5
  My SQLやORACLEではGROUP_CONCATで実現可能な機能ですがSQLSERVERのため使用できず詰まっています。
6
+ 環境としてはVB.NETからSQL Serverに接続しています。
6
7
 
7
8
  |DataId|出身|性別|氏名|
8
9
  |:--|:--:|--:|
@@ -25,9 +26,10 @@
25
26
  |大阪|女|2|005,006|
26
27
  |愛知|女|2|007,008|
27
28
 
28
- 過去ログなどを参照してコードを組みましたがうまくいきません。
29
+ 過去ログを参照してコードを組みましたがうまくいきません。
29
30
  コード自体に間違いがあれば教えていただきたいです。
30
31
  また他の方法で実現可能であれば方法を教えていただけませんでしょうか。
32
+ よろしくお願いします。
31
33
 
32
34
  ### 発生している問題・エラーメッセージ
33
35
 
@@ -55,9 +57,12 @@
55
57
  ### 試したこと
56
58
 
57
59
  過去ログや他サイトなど参照し以下でできそうだったので実装しましたが
58
- せんでした
60
+ 上記のエラーで詰ってしまっていま
61
+ ↓過去ログ
62
+ [リンク内容](https://teratail.com/questions/156977)
63
+ ↓過去ログにあったリンク先
59
- http://uyan39.hatenablog.com/entry/20120721/1342893081
64
+ [リンク内容](http://uyan39.hatenablog.com/entry/20120721/1342893081)
60
- https://webbibouroku.com/Blog/Article/forxmlpath
65
+ [リンク内容](https://webbibouroku.com/Blog/Article/forxmlpath)
61
66
 
62
67
  ### 補足情報(FW/ツールのバージョンなど)
63
68