2017-12-23 21 views
1

顧客が特定の製品を持っているかどうかを確認したい。そうなら、はいを返します。そうでない場合は、いいえを返します。ケース・ステートメントを使用したSQL問合せ

私はそれを返すクエリを書いた。しかし、私はProductFamilyの名前を入力したくありません。私は仲直りしたいです。

SELECT * 
FROM [reference].[ProductFamilyMapping] 
WHERE (isA = 1) 
ORDER BY productfamilyname 

どのように相互Caseステートメントに参加します:

SELECT 
    ID, 
    (CASE 
     WHEN ProductFamily IN ('Product') 
      THEN 'Yes' 
      ELSE 'No' 
    END) AS 'O' 
FROM 
    [source].[Opportunity] A 

次のクエリはProductFamilyマッピングがあれば、私は知ることができますか?

+0

投稿を編集して、希望の出力形式といくつかの入力形式を追加できますか? – Vashi

答えて

1

列名(「SELECT *」ではなく「SELECT mycolumn」)を指定する必要がありますが、ハードコードされたテキストではなくIN文にサブクエリを配置できます。

SELECT 
    ID 
    ,(CASE 
     WHEN ProductFamily IN 
     (SELECT ProductFamily FROM [reference].[ProductFamilyMapping] where (isA = 1)) 
      THEN 'Yes' 
     ELSE 'No' END) as 'O' 
From [source].[Opportunity] A 

(Iは、[参照]の列名を想定しています。[ProductFamilyMapping]もProductFamilyです)。

1

代わりに、CTEとLEFT JOINを使用することもできます。 試してみる

WITH PFM AS (
    SELECT DISTINCT ProductFamily FROM [reference].[ProductFamilyMapping] where (isA = 1) 
) 
SELECT 
    ID 
    ,CASE WHEN PFM.ProductFamily IS NULL THEN 'No' ELSE 'Yes' END AS 'O' 
From [source].[Opportunity] A 
LEFT JOIN PFM ON A.ProductFamily = PFM.ProductFamily