2016-05-20 10 views
0

私は、次のしているしてください結果、7つの列:照会主キー<code>primary key (reg_num)</code>と以下

reg_num day Morning Midday Lunch Evening Total_Period 
0983776412 3 Yes Yes No Yes 3 
0985674389 3 No Yes No No 1 
0983464736 4 Yes No Yes No 2 
0983466827 11 No No No No 0 
0983481234 15 Yes Yes Yes Yes 4 

各行はreg_numあたりの一日のために「はい」と「いいえ」の組み合わせを示しています。最後の列「Total_Period」は、各行のすべての「yes」の数です。

"Total_Period"の値はどのように計算できますか?

+0

合計「Total_Period」または合計「Total_Period」を「day」に、または合計「Total_Period」を「reg_num」とします。 – Praveen

+0

総計 'Total_Period' try ::'あなたの表から総計(Total_Period)を選択してください ' – Praveen

+0

お返事ありがとうございます。 Total_Periodは、 'Morning'、 'Midday'、 'Lunch'、 'Evening'のいずれかで 'Yes'のみカウントされます。したがって、 '4日'には2の 'Total_Period'があります。その理由は、そのレコードが '午前'と '午前'に 'はい'を持つためです。お役に立てれば? –

答えて

0

最も簡単な方法は次のとおりです。

select decode(Morning, 'Yes', 1, 0) + 
     decode(Midday, 'Yes', 1, 0) + 
     decode(Lunch, 'Yes', 1, 0) + 
     decode(Evening , 'Yes', 1, 0) 
from your_table 
+0

はい!それはそれを修正した。ありがとう –

0

あなたのDBは11G以上である場合にも、ORACLE REGULAR EXPを試すことができます。それが役に立ちそうですか?

SELECT a.reg_no, 
    a.dy, 
    a.morning, 
    a.middday, 
    a.lunch, 
    a.evening, 
    REGEXP_COUNT(a.morning 
    ||',' 
    ||a.middday 
    ||',' 
    ||a.lunch 
    ||',' 
    ||a.evening,'Yes') Total_Period 
FROM 
    (SELECT 0983776412 reg_no, 
    3 dy, 
    'Yes' AS morning, 
    'Yes' AS middday, 
    'No' lunch , 
    'Yes' evening, 
    NULL AS Total_Period 
    FROM dual 
)A; 
関連する問題