ご挨拶、
これが私の問題です。
複数の行からデータを取得し、より大きなクエリで単一の結果として返す必要があります。
私はすでに同様の質問をここに投稿しました。
メインクエリ内の 1 つの列に複数の値を返しますが、SQL の知識が不足しているため、答えがうまくいかなかったため、質問があいまいになったのではないかと思います。
私は Microsoft SQL 2005 を使用しています。
これが私が持っているものです。
CaseID を PK とする複数のテーブル。CaseID は一意です。
CaseID と ItemNum(AutoInc) を PK として組み合わせた 1 つのテーブル (tblKIN)。
データベース内の各個人には、複数の親戚がいる可能性が高いためです。
SQLクエリウィンドウで次を実行すると、機能します。
DECLARE @KINList varchar(1000)
SELECT @KINList = coalesce(@KINList + ', ','') + KINRel from tblKIN
WHERE CaseID = 'xxx' and Address = 'yyy'
ORDER BY KINRel
SELECT @KINList
これは、同じ住所に住んでいるすべての人の関係を返します。結果はこんな感じ・・・
父、姪、妹、息子
さて、私にとっての問題は、それをメインクエリにどのように追加するかです。
関連情報に短縮すると、主なクエリは次のようになります。
SELECT DISTINCT
c.CaseID,
c.Name,
c.Address,
Relatives=CASE WHEN exists(select k.CaseID from tblKIN k where c.CaseID = k.CaseID)
THEN DECLARE @KINList varchar(1000)
SELECT @KINList = coalesce(@KINList + ', ','') + KINRel from tblKIN
WHERE CaseID = 'xxx' and Address = 'yyy'
ORDER BY KINRel
SELECT @KINList
ELSE ''
END
FROM tblCase c
ORDER BY c.CaseID
私が受け取るエラーは次のとおりです。
サーバー: メッセージ 156、レベル 15、状態 1、行 13
キーワード「DECLARE」付近の構文が正しくありません。
サーバー: メッセージ 156、レベル 15、状態 1、行 18
キーワード「ELSE」付近の構文が正しくありません。
DECLARE から SELECT @KINList の末尾までを括弧内に入れ子にしてみました。
CASE ステートメントの THEN セクションに BEGIN と END を追加してみました。
どちらも機能しませんでした。
ソース テーブル データは次のようになります。(読みやすくするためにピリオドを追加)
tblCase
CaseID Name Address
10-001 Jim......100 Main St.
10-002 Tom....150 Elm St.
10-003 Abe.....200 1st St.
tblKIN
CaseID ItemNum Name Relation Address
10-001 00001 Steve...Son........100 Main St.
10-002 00002 James..Father....150 Elm St.
10-002 00003 Betty.. ..Niece......150 Elm St.
10-002 00004 Greta...Sister.....150 Elm St.
10-002 00005 Davey..Son........150 Elm St. .
10-003 00006 エドガー...ブラザー...200 1st St.
CaseID = 10-002 のクエリを実行すると、次のものが返される必要があります。
CaseID 名前 住所.......親戚
10-002 Tom...150 Elm St. ..Father, Niece, Sister, Son
これはおそらく簡単な修正であると確信していますが、その方法がわかりません。
お時間をいただきありがとうございます。質問が長くなって申し訳ありませんが、はっきりさせておきたいと思います。
ありがとう !!!