我有一个不在生产中的数据库,所以主表是 CustodyDetails,这个表有一个ID int IDENTITY(1,1) PRIMARY KEY列,我正在寻找一种添加另一个唯一标识符的方法,它没有在任何其他表中引用,我认为通过将其纳入帐户列的内容不会完全是身份密钥。
不过,这个新的身份列有一些特定的细节,这就是我的问题开始的地方。格式如下:XX/YY其中XX是一个自动递增的值,它在每个新年重置/重新启动,YY是当前年份的最后 2 位数字SELECT RIGHT(YEAR(GETDATE()), 2)。
因此,例如让我们假设从28/12/2015开始到03/01/2016每天添加一条记录,该列将如下所示:
ID ID2 DATE_ADDED
1 1/15 2015-12-28
2 2/15 2015-12-29
3 3/15 2015-12-30
4 4/15 2015-12-31
5 1/16 2016-01-01
6 2/16 2016-01-02
7 3/16 2016-01-03
Run Code Online (Sandbox Code Playgroud)
我想到了用前端来解析复合ID(示例中为ID2)获取最后2位数字并与当前年份的最后2位数字进行比较,然后决定是否开始一个新的关联。当然,能够在数据库端完成这一切就太好了。
编辑 1:顺便说一句,我也看到人们使用单独的表来存储并行身份键,所以一个表身份键变成了第二个表辅助键,这听起来有点狡猾,但也许是这种实现的情况?
编辑 2:这个额外的ID 是一个旧文档引用,它标记每个文件/记录。我想人们可以将其视为主 ID 的特殊别名。
这个数据库每年处理的记录数量在过去 20 年里没有超过 100 条,而且非常(真的,非常高)不可能,当然,如果它超过 99 条,该领域将能够继续使用额外的数字,前端/过程将能够超过 99,所以它不会改变事情。
当然,其中一些细节我一开始没有提到,因为它们只会缩小解决方案的可能性以满足我的特定需求,试图使问题范围更广。
我有一个存储发票的表,我正在尝试从中获取统计信息,不幸的是,该表构建不佳,一些关键信息都混杂在 nvarchar 字段中,例如发票是否已取消或是否已取消免除费用位于此字段中的一个非常复杂的字符串中,该字符串由前端解析。3453.234;exempt;Invoice Total...
所以我想创建一个排除几个词的查询。我的问题是如何完成一个查询,该查询可以根据关键字列表(已取消、免除)排除记录,因此如果该字段中有任何单词,则不会考虑金额。
无论我如何尝试对该查询生成的记录集进行分组,它都不会这样做。查询工作正常,问题是尝试按 A 分组
SELECT CountryCode + + ProductNumber + + StockType AS A,
Quantity AS B,
Description AS C,
Price AS D
FROM dbo.vwSalesInvoiceWHandling
UNION ALL
SELECT CountryCode + + ProductNumber + + StockType AS A,
Quantity AS B,
Description AS C,
Price AS D
FROM dbo.vwSalesInvoiceWOHandling
Run Code Online (Sandbox Code Playgroud)