我必须在每个成员记录的数据集中创建5个标志。现在最后的要求是对每个成员的所有标志求和。
例如,一个成员有 - Y,Y ,,, Y,即3个标志设置为Y.我需要将这些总和作为我在上一次创建的总和字段中的3。
我在Oracle(Proc SQL in SAS)
中这样做请帮助别人!!
非常感谢..
答案 0 :(得分:2)
使用COUNTC对它们进行全部计算。
select countc(catx(', ', flag1, flag2, flag3, flag4, flag5), 'Y') as num_y
答案 1 :(得分:0)
一种方法使用{{1}}:
{{1}}
答案 2 :(得分:0)
连接5个标志,然后使用regexp_count()计算" Y" s。如果这是一个问题,以下内容也允许大写/小写。
select regexp_count(flag1||flag2||flag3||flag4||flag5,'[yY]')
Oracle 10g及以上
答案 3 :(得分:0)
我建议重新配置表格,为Y,N摄取1,0。如果可能的话。
如果没有,oracle有一个regexp_count。连接字段然后regexp_count。
答案 4 :(得分:0)
user9026530明确表示他正在使用SAS,这里是一个不涉及SAS功能的纯SQL解决方案:
WITH
aset
AS
(SELECT 'Y' flag1
, 'N' flag2
, 'Y' flag3
, 'Y' flag4
, NULL flag5
FROM DUAL)
SELECT aset.*, LENGTH (REGEXP_REPLACE (flag1 || flag2 || flag3 || flag4 || flag5, '[^Y]', NULL)) flag_count
FROM aset
FLAG1 FLAG2 FLAG3 FLAG4 FLAG5 FLAG_COUNT
Y N Y Y 3