SQL 视图 选择 可选
Posted
技术标签:
【中文标题】SQL 视图 选择 可选【英文标题】:SQL View Select Optional 【发布时间】:2020-07-08 18:09:09 【问题描述】:我认为当前的输出是这样的
Code Value GrpCode GrpDft
--------------------------
A, 1, A1, N
B, null, A1, Y
C, 1, A2, N
D, 2, A2, Y
E, null, A3, Y
F, null, A3, N
规则如下
-
每个组只能有 2 个代码,并且总是有一个默认代码而不是一个默认代码。
如果默认代码不为空,则始终显示该行。不管非默认代码是否有价值
如果默认代码为空,则仅当它有值时才显示无默认代码值。
如果默认和非默认代码都为空,则显示默认值。
所以基于上面我应该有下面的行剩余。
A, 1, A1, N
D, 2, A2, Y
E, null, A3, Y
不幸的是,由于其他因素,这必须作为视图而不是存储过程或函数来完成。
【问题讨论】:
您的问题是指所谓的“默认代码”。我在示例数据中看不到该名称的任何内容。 您提出了一些要求,但遗漏了一个问题。请阅读this,了解一些改进“问题”的技巧。 【参考方案1】:如果我没听错的话,你可以用窗口函数来实现这个逻辑:
select *
from (
select
t.*,
row_number() over(
partition by grpCode
order by
case
when grpDft = 'Y' and value is not null then 0
when grpDft = 'N' and value is not null then 1
else 2
end,
grpDft desc
) rn
from mytable t
) t
where rn = 1
Demo on DB Fiddle:
代码 |价值 | GrpCode | GrpDft | rn :--- | ----: | :-------- | :----- | :- 一个 | 1 | A1 | N | 1 D | 2 | A2 |是 | 1 E | 空 | A3 |是 | 1【讨论】:
以上是关于SQL 视图 选择 可选的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 中的函数需要在 Power BI 中具有可选参数
SQLAlchemy 选择在 SQLite 表上给出不同的结果,原始 sql 与可选