2012-02-09 11 views
1

概念的には、フルーツアイテムのリストを持つテーブルがあります。私は単一のクエリで、リンゴ、オレンジ、リンゴ、オレンジの数、および他の果実の数を調べることを望みます。「A」、「B」、「AまたはB」のT-SQLの数値

これをT-SQLでどうすれば実現できますか?

+0

例として、あなたのタイトルと説明は、「リンゴやオレンジ」のような単一の値を持つ行を持つ可能性があることを暗示しています... @ gbnの回答に基づいて、あなたが言ったことは、それぞれの行は 'リンゴ'や 'オレンジ'や 'キウイ'のような特異な値を持つでしょう... –

+0

@AaronBertrandデータの概念はあまりにも多くの説明を取っていました。私はあなたの意見を得るが、果物は普遍的であり、効果的に答えられた。 – Craig

+0

@AaronBertrand前回の質問を見ると、答えがついていないもののほとんどすべてが正しく答えられていませんでした。 – Craig

答えて

9
SELECT 
    COUNT(*) AS Allfruits, 
    COUNT(CASE WHEN fruit = 'Apple' THEN 1 END) AS AppleCount, 
    COUNT(CASE WHEN fruit = 'Orange' THEN 1 END) AS OrangeCount, 
    COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS AppleOrOrangeCount, 
    COUNT(*) - COUNT(CASE WHEN fruit IN ('Apple','Orange') THEN 1 END) AS OtherFruitCount 
FROM 
    MyTable 

注:CASEは、ELSE節または明示的な条件なしでNULLを返します。 COUNTはNULLを無視します。

+0

完璧な答え!アップアップされました! – Marco

+0

美しい。ありがとう!私が見逃したコンセプトは、CASEをCOUNTの中に入れることでした。私はそれを前にしたとは思わない。 – Craig

+0

+1(少なくとも私の目には)漠然とした問題を考え出すために+1。 –

関連する問題