sql-server - 根据另一个属性是否在列表中,将属性添加到视图
问题描述
假设我有一个 CommissionNumber 和 CreationDate 的视图:
Select CommissionNumber, CreationDate
FROM dbo.MyOrders
CommissionNumber 只是一个大小为 12 的 varchar。
还有另一个表(让我们命名dbo.CanceledOrders
),其中包含最近取消的订单的 CommissionNumbers:
CREATE TABLE [dbo].[CanceledOrders] (
[PK_ID] [int] IDENTITY(1,1) NOT NULL,
[FK_VehicleFile] [int] NOT NULL,
[CommissionNumber] [nvarchar](15) NULL,
[CancelingUser] [nvarchar](50) NULL,
[CancelationDate] [date] NULL,
[ValidatingUser] [nvarchar](50) NULL,
[ValidationDate] [date] NULL,
[ReasonForCancelation] [nvarchar](500) NULL);
我想根据视图的commissionNumber 是否也列在第二个表中,向上面的视图添加一个属性,该属性是真还是假,这表明该订单已被取消。这应该看起来像这样:
Select CommissionNumber, CreationDate, IsCancelled as (case....
FROM dbo.MyOrders
我无法正确使用语法。有谁能够帮我?
解决方案
您可以使用外部联接,然后检查联接表上的主键是否具有指示是否找到联接的值。如果表中的多条记录上可以存在相同的值,您可能会得到重复的记录。CommissionNumber
CanceledOrders
Select o.CommissionNumber, o.CreationDate, IIF(c.PK_ID IS NULL, 0, 1) AS IsCancelled
FROM dbo.MyOrders o LEFT OUTER JOIN dbo.CanceledOrders c ON o.CommissionNumber = c.CommissionNumber
推荐阅读
- css - 如何在 CSS3 中响应式地将项目与 Flexbox 对齐?
- python - 我想用 django 制作一个自定义作者模型,但我不能这样做:(
- python-3.x - 我在哪里可以找到 NLTK 源 + 安装?
- c++ - 为什么这个程序崩溃并返回大值?
- html - 将计数器重置为零,并且当 jQuery 中的按钮更改时应该从零重新开始
- jquery - 合并来自 2 个 jQuery 片段的功能
- javascript - 具有唯一属性的 TypeScript 对象集
- flutterwebviewplugin - webview_flutter 无法隐藏/更改某些元素
- amazon-web-services - 获取“请求中包含的安全令牌无效。” 尝试获取 s3 的预签名 URL 时
- azure-devops - 管理 Azure DevOps BurnDown