2016-08-11 4 views
0

SQLに関する質問があります。SQL-Server - 11で応答を探すためのヘルプ

私は、異なる顧客からの質問応答を含むテーブルを持っています。基本的なコードに続く

:私はISTを見つけるために必要なもの

SELECT CUSTOMER_ID, QUESTIONS_ID, RESPONSE, CALENDAR_MONTH FROM 
DB.[dbo].[T_FCT_QUESTIONS] 
WHERE CALENDAR_MONTH = '201607' 
AND RESPONSE = '11'  

、応答11を含み、唯一の応答として11が存在する場合またはから他の結果もあるお客様のQuestion_IDさん(0 -10)。

どうすればこの問題を解決できますか?

答えて

0

あなたは集計でこれを行うことができます。

SELECT QUESTIONS_ID, 
     (CASE WHEN MAX(RESPONSE) = '11' AND MIN(RESPONSE) = '11' 
      THEN 'ONLY 11' 
      WHEN SUM(CASE WHEN RESPONSE = '11' THEN 1 ELSE 0 END) > 0 
      THEN 'SOME 11' 
      ELSE 'NO 11' 
     END) as INFO_11 
FROM DB.[dbo].[T_FCT_QUESTIONS] 
WHERE CALENDAR_MONTH = '201607' 
GROUP BY QUESTIONS_ID; 
0

私がよく理解していれば、私はこの解決策を提案します。 グループ化された2つのSELECTステートメントを実行する必要があります.1つはRESPONSE 11で、もう1つは他のRESPONSEコードです。次に、これらの選択肢をLEFT JOINと結合する必要があります。

SELECT 
    Resp11.*, 
    CASE 
    WHEN Resp0_10.CALENDAR_MONTH IS NULL AND Resp0_10.CUSTOMER_ID IS NULL AND Resp0_10.QUESTIONS_ID IS NULL 
    THEN 'No other RESPONSE for this month' 
    ELSE 'Other RESPONSE for this month' 
    END 
FROM 
(
SELECT CALENDAR_MONTH, CUSTOMER_ID, QUESTIONS_ID 
FROM DB.[dbo].[T_FCT_QUESTIONS] 
WHERE RESPONSE = '11' 
GROUP BY CALENDAR_MONTH, CUSTOMER_ID, QUESTIONS_ID 
) Resp11 
LEFT JOIN 
(
SELECT CALENDAR_MONTH, CUSTOMER_ID, QUESTIONS_ID 
FROM DB.[dbo].[T_FCT_QUESTIONS] 
WHERE RESPONSE >= '0' AND RESPONSE <= '10' 
GROUP BY CALENDAR_MONTH, CUSTOMER_ID, QUESTIONS_ID 
) Resp0_10 
ON Resp11.CALENDAR_MONTH=Resp0_10.CALENDAR_MONTH 
    AND Resp11.CUSTOMER_ID=Resp0_10.CUSTOMER_ID 
    AND Resp11.QUESTIONS_ID=Resp0_10.QUESTIONS_ID 

2番目の選択肢では使用できない項目にはNULL項目しかないため、これらの項目には他の回答はありません。

+0

こんにちはLucbert、このソリューションの作品これらの結果を見つけるのに、この素​​早く素敵な解決策に感謝します。 THX and BR Rudi – RudiSQLQ

0

あなたは以下で応答11とそのすべての質問と回答を持っている顧客を選択することができます。

SELECT CUSTOMER_ID, QUESTIONS_ID, RESPONSE, CALENDAR_MONTH 
FROM DB.[dbo].[T_FCT_QUESTIONS] a 
WHERE EXISTS (
    SELECT 1 
    FROM DB.[dbo].[T_FCT_QUESTIONS] b 
    WHERE RESPONSE = '11' 
    AND b.CUSTOMER_ID = a.CUSTOMER_ID 
    AND b.QUESTIONS_ID = a.QUESTIONS_ID 
    AND b.CALENDAR_MONTH = a.CALENDAR_MONTH 
    AND b.CALENDAR_MONTH = '201607' --This could also be a parameter? 
) 
+0

こんにちはNickyvV、あなたの助けにthx、これは11だけ私にすべてを提供しますが、私は11が含まれ、11を含む何かを知る必要があります。 THXとBRルディ – RudiSQLQ

関連する問題