sql - CASE 语句 SQL 处理数据问题
问题描述
我正在尝试创建一个计算来处理棘手的数据问题。
在填充出生日期字段时,我需要测量何时为帐户运行交易。
有时在数据中,一个账户可以有 2 个人,如果只为其中一个人填充了出生日期,并且时间戳相同,那么这将被视为填充了出生日期的交易。在这种情况下,我不想计算第二行的出生日期为空白值。
我一直在尝试在 case 语句中使用 Y/N 标志或 0/1 计数,但我还没有弄清楚如何处理第二个空白行。
这是CASE
我一直在使用的基本语句:
SELECT DISTINCT
[Account_Nbr],
[Timestmp],
CASE
WHEN [DOB] <> ' ' THEN 'Y'
ELSE 'N'
END AS 'DOB ORDERED'
FROM
TABLE
GROUP BY
[Account_Nbr], [Timestmp], [DOB]
示例数据如下 - 我想将此标记为已处理并填充 DOB 的事务,但我不希望将空白 DOB 计数或标记为 N
关于如何处理这个问题的任何想法?谢谢
解决方案
如果我理解正确,这是从具有多条记录的 account_nbr 中仅返回一行的可能方法
-- Just inserting sample data here.
WITH CTE AS (
SELECT Account_Nbr = 123, Timestmp = GETDATE() , Operator = 1, DOB = '19700101'
UNION ALL
SELECT Account_Nbr = 123, Timestmp = GETDATE() , Operator = 2, DOB = ' ')
--No distinct necessary since it will always group by account_nbr and timestamp.
SELECT Account_Nbr,
Timestmp,
DOB_Ordered = (CASE WHEN MAX(DOB) <> ' ' THEN 'Y' ELSE 'N' END)
FROM CTE
GROUP BY
[Account_Nbr], [Timestmp]
推荐阅读
- android - 两个视图不分行
- ios - 从电子邮件 Firebase 获取用户 ID(不是当前用户)
- graphql - 在不带任何参数的 GraphQL 中使用实现
- java - 过滤 mysql 数据以显示在 JTable 中时参数索引超出范围
- logistic-regression - 如何在测试数据中应用逻辑回归模型
- sqlalchemy - 没有百分号的 SQLAlchemy 编译语句有条件地转义
- python - int 对象不可下标错误和列表可变性错误
- r - Knime 中的动态字符串操作
- json - angular 6 with jsonplaceholder ,点击按钮后打开 posts/${id}
- php - 处理 ajax 请求的 TokenMismatchException