私はこのようなテーブルを持っている:SQL Serverの最小
tblMembers
ID Credit Is_Member
--- --- ---
1 45 True
2 20 False
3 25 True
4 -10 True
5 -5 False
6 13 True
は、どのように私は「= クレジットとIS_MEMBERの(正の最小)値を持つレコードを示す図を作成することができます本当ですか?
私はこのようなテーブルを持っている:SQL Serverの最小
tblMembers
ID Credit Is_Member
--- --- ---
1 45 True
2 20 False
3 25 True
4 -10 True
5 -5 False
6 13 True
は、どのように私は「= クレジットとIS_MEMBERの(正の最小)値を持つレコードを示す図を作成することができます本当ですか?
select min(credit)
from tblMembers
where Is_Member = 'true'
and credit > 0
...これが宿題であれば、そのようにタグ付けしてください(回答は異なる場合があります)。
EDIT
が正しく質問を読んでいません。最低のクレジットスコアは、(何も結果を正味ないと思われる)メンバでなくてもよく、非会員とメンバーが共有することがあるので
select * from tblMembers
where credit = (select min(credit)
from tblMembers
where credit > 0
and Is_Member = 'true')
and Is_Member = 'true'
...あなたはIS_MEMBER両方のスポットで=「真」のチェックが必要最も低い得点が表示されます。
何か不足していますか?十分に簡単なようだ:
select min(Credit) as Credit
from tblMembers
where Is_Member = 'True' and Credit >= 0
最低クレジットを表示しているに過ぎず、クレジットが最も低いレコードは表示されません(Justin Niessnerのソリューションを参照) – JeffO
SELECT MIN(Credit), ID FROM tblMembers WHERE Is_Member="True"
GROUP BY ID HAVING MIN(Credit) > 0
私はしかし、これをoversimplifyingかもしれないと思います。自己責任。複数の行をするために接続することができることを
SELECT *
FROM tblMembers
WHERE Credit = (SELECT MIN(Credit)
FROM tblMembers
WHERE Is_Member = TRUE AND Credit > 0)
AND Is_Member = TRUE
注:この基準を満たす複数のレコード...
SELECT *
FROM tblMembers
WHERE Credit = (
SELECT MIN(Credit)
WHERE Credit > 0
AND Is_Member = 'True'
)
あなたはこのようになりますクエリを使用したいです最低の正の値であるため、複数の結果が得られる可能性があります。
があるかもしれません
SELECT * FROM tblMembers
WHERE Credit =
(SELECT MIN(Credit) FROM tblMembers WHERE Credit > 0 AND Is_Member = 'True')
AND Is_Member = 'True'
同じ(最低)のクレジットを持つ複数の行がある場合、複数の行が返されることに注意してください。
あなたは、あなたの基準に合った複数の記録を持つことになります。 SQLのあなたの味に応じて、
select top 1 * from credit
where is_member = 'true'
and credit > 0
order by credit
別名
create view PositiveCreditMember
as
select top 1
ID
, credit
, is_member
from
tblMembers
where
credit in (
select
min(Credit)
from
tblMembers
where
credit > 0
and is_member = 'True'
)
and is_member = 'True'
order by ID
または
select * from credit
where is_member = 'true'
and credit > 0
order by credit
limit 1
:あなただけの単一の行をしたい場合。これは1つのレコードしか与えません。他の人は、最小値を持つ複数のレコードがあるかもしれないと言っているからです。これは、サブクエリを排除
CREATE VIEW vwXYZ
AS
SELECT TOP 1 *
FROM tblMembers
WHERE [Is_Member] = 1
AND Credit > 0
ORDER BY Credit;
:何について
。あなたがランダムに一致する行の一つたい場合
は:
select top 1 * from tblMembers where Is_Member = 1 order by credit
を使用すると、すべての一致する行をしたい場合は:
select top 1 with ties * from tblMembers where Is_Member = 1 order by credit
ジャスティン - 私は「真のIS_MEMBER =は」行く必要だと思いますサブセレクト内。そうでなければ、最低の信用度を持つ人がメンバーでない場合、結果は返されません。 –
@Ericキャッチをありがとう。あなたは両方のクエリでそれを必要とします...外側のクエリでそれを取り除くと、最も低いメンバに等しいスコアを持つ非メンバを得ることができます。 –