データベースの人にとってはおそらく簡単ですが、私はこのSQLの問題と戦っていますその周りに私の心をラップすることができました。私はテーブル自体に自己結合を作成しましたが、別のステートメントがありますが運はありません。両方の基準に対して存在するレコードを同じテーブルで検索し、同じ列に異なる列名で表示する方法
ここでは達成しようとしているものを下の図のように示しています。誰かが私にそれの理由を教えてもらえれば、それはまたすばらしいことになるでしょう。ありがとう
私の基準のために、テーブル上に「IL」と「ND」コードの両方を持つ唯一のユーザー名を選択したいだけです。彼らが「IL」と「ND」を持たない場合は、 は私のデータセットに含まれていないはずです。それらのアカウントを取得した後、私は のように1つの行にinforを表示したいのですが、2つ以上のILまたはND acctsがあれば、そのうち1つを選択して表示したいだけです。
select
a.username as username, min(a.myacctnumber) as NDAcctNumer, min(b.myacctnumber) as ILAccNumber
from
Table1 a
inner join
(
select
username, code, myacctnumber
from
Table1
where
code = 'IL'
group by
username, code, myacctnumber
) b
on
a.username = b.username
where
a.code = 'ND'
group by
a.username
order by
username asc
これが発生します:ここで
username Code MyAcctNumber
------------------------------------
user1 IL 10277
user1 ND 19754
user1 BD 19542
user3 IL 10377
user4 IL 10477
user4 ND 18756
user4 ND 19854
user4 NF 18745
user5 IL 95423
user5 ND 74152
user5 BC 18745
は私の結果セットのテーブルには、あなたがテーブル自体にユーザーINNER JOIN
がこれを達成するためにすることができます
username NDAcctNumer ILAccNumber
------------------------------------------
user1 19754 10277
user4 18756 10477
user5 74152 95423
データベースを選択してそれを固執することから始めます(つまり、MySQL **と** SQL Serverにタグを付けないでください - どちらかを選択してください...) – DavidG
質問に該当しないタグは使用しないでください。実際に使用しているデータベースが不明なため、データベースタグを削除しました。実際に使用しているデータベースの* only *タグを追加してください。 –