请给出下面的结果,使用primary key (reg_num)的七列
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“的值吗?
发布于 2016-05-20 07:45:00
最简单的方法是:
select decode(Morning, 'Yes', 1, 0) +
decode(Midday, 'Yes', 1, 0) +
decode(Lunch, 'Yes', 1, 0) +
decode(Evening , 'Yes', 1, 0)
from your_table发布于 2016-05-20 09:08:17
如果您的DB是11G及以上,您也可以尝试ORACLE常规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;https://stackoverflow.com/questions/37340675
复制相似问题