有一个选择声明
select
SouceField_A
+ 'DeliminiterCharacter'
+ SouceField_A
+ 'DeliminiterCharacter'
+ SourceField_B
+ 'DeliminiterCharacter'
...
问题是,在现实生活中,我没有一个简单的字段,但有案例时......结束。这使得它容易出错,并且在需要更改时难以使两个位置保持最新。为此,我想知道是否有一种简单的方法可以将其变为变量等。
以下是Show的查询部分
select
ISNULL ( Oracle_Update , 'create' ) + '~' +
@Email + '~' +
@ItemNo + '~' +
'' + '~' +
'D' + '~' +
ISNULL ( Item_Desc_DE , '' ) + '~' +
REPLACE(REPLACE(ISNULL ( Item_Specification_DE , '' ), CHAR(13), ''), CHAR (10), ' $#') + '~' +
ISNULL ( Item_Copy_From, '' ) + '~' +
-- master template
CASE WHEN Oracle_Update like 'update' OR item_copy_from is not NULL
THEN
''
ELSE ISNULL ( Item_Template , 'MAG Assembly' )
END + '~' +
CASE WHEN Oracle_Update like 'update' OR item_copy_from is not NULL
THEN
''
ELSE ISNULL
只需使用嵌套查询:
select
SouceField_A
+ 'DeliminiterCharacter'
+ SouceField_A
+ 'DeliminiterCharacter'
+ SourceField_B
+ 'DeliminiterCharacter'
FROM (
SELECT CASE ... ) AS t
您可以使用派生表,其中此表在FROM子句中定义。我给了长代码列别名SourceField_A
和SourceField_B
。派生表是别名dT
。为清楚起见,SELECT子句可以使用列名前面的别名。例如,dT.SourceField_A
SELECT dT.SourceField_A
+ 'DeliminiterCharacter'
+ dT.SourceField_A
+ 'DeliminiterCharacter'
+ dT.SourceField_B
+ 'DeliminiterCharacter'
FROM (
ISNULL ( Oracle_Update , 'create' ) + '~' +
@Email + '~' +
@ItemNo + '~' +
'' + '~' +
'D' + '~' +
ISNULL ( Item_Desc_DE , '' ) + '~' +
REPLACE(REPLACE(ISNULL ( Item_Specification_DE , '' ), CHAR(13), ''), CHAR (10), ' $#') + '~' +
ISNULL ( Item_Copy_From, '' ) + '~' +
-- master template
CASE WHEN Oracle_Update like 'update' OR item_copy_from is not NULL
THEN
''
ELSE ISNULL ( Item_Template , 'MAG Assembly' )
END + '~' +
CASE WHEN Oracle_Update like 'update' OR item_copy_from is not NULL
THEN
''
ELSE ISNULL
...
AS SourceField_A
,...
AS SourceField_B
) AS dT