当注释记入客户信息时,可能会参考发票。我试图提取一份包含发票和相关注释的报告。
我努力了一段时间,因为这两列使用的是2种不同的数据类型(Varchar和Text)。我最终决定使用强制转换来更改数据类型并将其导入到临时表中。既然我正在使用相同的数据类型VarChar,我认为它应该更容易。这是我用来创建临时表的语句。
select c.clientid, c.searchname, cast(nom.ref as varchar(150)) as Ref,
n.CreatedDate, s.name as 'Note Creator', nt.NoteTypeName, n.RecordID,
cast(n.note as varchar(150)) as note
into #ARNotes
from tblnotes n
join tblclient c on c.clientid=n.RecordID
join tblstaff s on s.staffid=n.CreatedByID
join tblNoteTypes nt on nt.NoteTypeID=n.NoteTypeID
join tblNominal nom on nom.ClientID=c.ClientID
where n.Note is not null
所有注释都在我的临时表中正确显示了一些。它仍然是原始数据,需要X像Y子句一样神奇。
因此,我的新临时表#ARNotes中的数据示例看起来像这样:
Invoice Number Notes
1234 1234 Here is an example
A111 Another Example A111
B222 Note Example B222
9876 Note Example 9876
5432 No bill referenced
CCCC No bill referenced
我正在使用类似于下面的查询语句的select语句进行查询。我的最终声明将具有更多的逻辑,因此它只会提取过期的发票。
select *
from #ARNotes
where note like ('%'+ref+'%')
order by CreatedDate desc
唯一的问题是,仅在发票仅是数字的情况下才提取发票。如果发票号是字母数字,则不显示。因此,如果我的表使用的是示例数据,则只会将这些结果拉到下面。因此,它省略了A111和B222相关的注释。
Invoice Number Notes
1234 1234 Here is an example
9876 Note Example 9876
我实际上缺少所有值时缺少什么?还是有可能吗?
经过进一步检查,我发现带有发票编号的数据带有尾随空格。仅是整数的那些是从我们的旧系统中导入的,并且没有为新系统分配新的参考号/发票号。我将导入临时表的时间调整为
select c.clientid, c.searchname, **rTRIM(CAST(nom.ref AS varchar(150))) AS Ref,**,
n.CreatedDate, s.name as 'Note Creator', nt.NoteTypeName, n.RecordID,
cast(n.note as varchar(150)) as note
into #ARNotes
from tblnotes n
join tblclient c on c.clientid=n.RecordID
join tblstaff s on s.staffid=n.CreatedByID
join tblNoteTypes nt on nt.NoteTypeID=n.NoteTypeID
join tblNominal nom on nom.ClientID=c.ClientID
where n.Note is not null