有一个像
这样的选择语句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
答案 0 :(得分:0)
只需使用嵌套查询:
select
SouceField_A
+ 'DeliminiterCharacter'
+ SouceField_A
+ 'DeliminiterCharacter'
+ SourceField_B
+ 'DeliminiterCharacter'
FROM (
SELECT CASE ... ) AS t
答案 1 :(得分:0)
您可以使用派生表,其中此表在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