ここに私の問題があります:条件SQLでSQL句を使用する方法
一致する行ごとにデータベースの最初の結果を取得する必要があります。私は多数の行を取得しています。
元のクエリはお客様IDごとに複数行を返します。最初の行を取得するために、私は彼らに番号をと考えましたとばかりだからここに1の番号を付けたものを取る、だから、
select distinct b.custid, name
FROM mth_Charge_Records a
join mth_header b on b.id = a.headerid
をそのクエリであります:
select distinct b.custid, name,
count(custid) OVER (order by custid rows unbounded preceding) as custcount
FROM mth_Charge_Records a
join mth_header b on b.id = a.headerid
これは機能し、行番号は数えられません。だから、私は条件としてcustcountを追加しようと、それは失敗します。
select distinct b.custid, name,
count(custid) OVER (order by custid rows unbounded preceding) as custcount
FROM mth_Charge_Records a
join mth_header b on b.id = a.headerid
where custcount = 1 <<--- Added this line
今私はcustcountが無効列であることをエラーを取得しています。
ご意見やご感想をお寄せください。ありがとうございます:)
使用しているRDMBSにタグを付けてください。 –
countの代わりにrow_number()関数を使用してください。あなたのレコードを一時テーブルに挿入し、rownum 1を持つレコードのみを選択するか、CTEを使用する – Veljko89
"最初の行"とは何ですか?これは、明確に定義された要件で、開始する必要がある場所です。 'custcount'は有効な列ではありません。なぜなら、SQL Serverはその名前の使用を要求される前にその列の名前を指定したクエリの部分を処理しなかったからです。その周りにはいくつかの方法がありますが、それらの要件に応じて最適です。 –