从“分层”中提取组合结果表中的数据

发布于 2024-12-04 07:51:43 字数 477 浏览 0 评论 0原文

我不太擅长 SQL,今天是星期一,昨晚我们开了一个派对,我无法正常思考,我需要你们的帮助。

如果我的sql表中有数据。 现在使用 LINQtoEntities 我需要获取 id == 1 的车库的所有记录,其中应该合并记录 -如果

ModelName    Color   Garageld

BMW          Black   NULL
Mercedes     Red     NULL
Audi         Yellow  NULL
BMW          Green   1
Mercedes     Blue    1

为车库和汽车定义了颜色 - 获取它,如果没有,取 NULL 的任何颜色

因此,garageId == 1 的结果集应该是:

Audi         Yellow  
BMW          Green   
Mercedes     Blue

I'm not so good in SQL, it's Monday, we had a party last night I can't think straight, I need your help guys.

If I have data in a sql table. something like that:

ModelName    Color   Garageld

BMW          Black   NULL
Mercedes     Red     NULL
Audi         Yellow  NULL
BMW          Green   1
Mercedes     Blue    1

And now using LINQtoEntities I need to get all the records for a garage with id == 1 where it should combine records - If there is a color defined for the garage and a car - get it, if there is none, take whatever color is for NULL

So the result set for the garageId == 1 should be:

Audi         Yellow  
BMW          Green   
Mercedes     Blue

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若言繁花未落 2024-12-11 07:51:43

我将通过使用从默认(空)车库条目到车库 1 条目的外连接来完成此操作。使用 COALESCE(),这是一个标准 SQL 函数,返回其第一个非空参数。

SELECT dflt.ModelName, COALESCE(g.Color, dflt.Color) AS Color
FROM mytable AS dflt
LEFT OUTER JOIN mytable AS g
  ON dflt.ModelName = g.ModelName AND g.GarageId = 1
WHERE dflt.GarageId IS NULL

当给定模型没有找到车库 1 条目时,外连接会使 g.* 的所有列都为空,因此 COALESCE() 将跳过 g.Color 并使用 dflt .用颜色代替。

I'd do this by using an outer join from default (null) garage entries to the garage 1 entries. Use COALESCE(), which is a standard SQL function that returns its first non-null argument.

SELECT dflt.ModelName, COALESCE(g.Color, dflt.Color) AS Color
FROM mytable AS dflt
LEFT OUTER JOIN mytable AS g
  ON dflt.ModelName = g.ModelName AND g.GarageId = 1
WHERE dflt.GarageId IS NULL

When this is no garage 1 entry found for a given model, the outer join makes all columns null for g.* so COALESCE() will skip g.Color and use dflt.Color instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文