Если я правильно понял вашу проблему, думаю, вы могли бы динамически генерировать запрос, который вы хотите использовать, используя следующий код:
DECLARE @SQL nvarchar(max) = 'SELECT ',
@TBL1 nvarchar(50) = 'data',
@TBL2 nvarchar(50) = 'data1',
@EXCLUDEDCOLUMNS nvarchar(100)= 'ID,col1'
-- column selection
SELECT @sql += @tbl1 + '.' + COLUMN_NAME + ' ,
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TBL1
-- from clause and remove last ,
set @SQL = LEFT(@sql,LEN(@sql) - 5)
SET @sql += '
FROM ' + @TBL1 + ' INNER JOIN
' + @TBL2 + '
ON '
-- define the on clause
SELECt @SQL += @tbl1 + '.' + COLUMN_NAME + ' = '+ @tbl2 + '.' + COLUMN_NAME +',
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TBL1
AND COLUMN_NAME not in (@EXCLUDEDCOLUMNS)
--remove last ,
set @SQL = LEFT(@sql,LEN(@sql) - 3)
--SELECt @SQL
EXEC SP_EXECUTESQL @sql
Перед выполнением убедитесь, что @sql сформирован правильно. выберите столбцы, которые вы хотите исключить из предложения on, используя параметр @EXCLUDEDCOLUMNS.
Я нашел решение, которое не требует никакой сторонней библиотеки или пользовательских задач с помощью <script>
задача, которая допускает использование JavaScript (или любой другой Apache BSF или поддерживаемый язык JSR 223) из целевого объекта Ant.
<target name="insert-filesize">
<length file="${afile}" property="fs.length.bytes" />
<script language="javascript">
<![CDATA[
var length_bytes = project.getProperty("fs.length.bytes");
var length_kbytes = Math.round((length_bytes / 1024) * Math.pow(10,2))
/ Math.pow(10,2);
var length_mbytes = Math.round((length_kbytes / 1024) * Math.pow(10,2))
/ Math.pow(10,2);
project.setNewProperty("fs.length.kb", length_kbytes);
project.setNewProperty("fs.length.mb", length_mbytes);
]]>
</script>
<copy todir="${target.dir}">
<fileset dir="${source.dir}">
<include name="**/*" />
<exclude name="**/*.zip" />
</fileset>
<filterset begintoken="$$$$" endtoken="$$$$">
<filter token="SIZEBYTES" value="${fs.length.bytes}"/>
<filter token="SIZEKILOBYTES" value="${fs.length.kb}"/>
<filter token="SIZEMEGABYTES" value="${fs.length.mb}"/>
</filterset>
</copy>
</target>
Существует математическая задача по http://ant-contrib.sourceforge.net/, который может быть полезным