最初にタイトルを謝罪しますが、それを1行に入れる方法はわかりません。入れ子のSELECTが最初のSELECTの値を入力として受け取る別のSELECTステートメントの中でSELECTを使用する
すべてのマスターアカウントには、1つ以上のサブアカウントがあります。設定方法は、すべてのアカウントにユニークなlskinidがあることです。アカウントがマスターアカウントの場合、lskinidとmasterlskinは同じlskinidを保持しているため同じです。 アカウントがサブアカウントの場合は、列masterlskinの下にマスターアカウントのlskinidが保持されます。これにより、サブアカウントを含むすべてのアカウントには、独自のアカウント名(refname)が設定されています。 問題がどこから始まるのですか。マスタアカウントの名前(マスタアカウントの名前)を選択し、2番目の列をそのマスタアカウントのサブアカウントの総数としたいとします。私はマスターアカウント(masterlskin) でグループ化しているので、アカウント名(refname)のレコードは複数ありますが、マスターアカウントのrefnameを表示したいと思います。
私がこれまでで何をしたか:
SELECT count(lskinid) AS "Total Subaccounts",
(SELECT refname FROM lskin WHERE lskinid = masterlskin) AS "Account Name"
FROM lskin
WHERE isactive = 1
Group by masterlskin
order by count(lskinid) DESC
表のlskinがあります -refname(アカウント名) -lskinid(accouontのID) は-masterlskin(マスターアカウントID) -isactive(ある場合アクティブアカウント) 。 。
サブクエリが複数のレコードを返すため、これは機能しません。これは、そのテーブルのすべてのレコードを調べているためです。現在の行でのみ値を取得するようにサブクエリに指示する方法はありますか?より正確には、現在の行のmasterlskinの値を取得するために、変数MASTERLSKIN(サブクエリですべての大文字を書いたもの)を使用しますか?
更新: 私はそれを修正
は、私はこのエラーメッセージを取得しています事前
でいただきありがとうございます。 「中」の部分の1つは大括弧で囲まれていませんでした。それを追加し、現在は完璧に動作しています。
あなたが探している用語が*相関サブクエリです* :) – DavidG
@DavidGとそのopはちょうど 'JOIN'(または多分' OUTER APPLY')が必要と思われる – Lamak
@Lamak確かに、それはおそらくですOPを混乱させるGROUP BY。 – DavidG