Powershell Invoke-Sqlcmd и несколько операторов выбора во входных данных

Проблема, с которой я сталкиваюсь, связана с использованием команды invoke-sqlcmd ниже

$result = Invoke-Sqlcmd -InputFile $sqlfile -ServerInstance $DB 

Пример sql в $sqlfile:

SELECT TOP 2 FROM [TABLE1]
SELECT TOP 3 FROM [TABLE2]

Тип вывода, который мне нужен, будет одним результатом с обеими таблицами одна за другой.

Например..

TABLE1
data1
data2
TABLE2
data1
data2
data3

Это вообще возможно?

Я попытался сделать то же самое, используя Invoke-Sqlcmd2, думая, что с типом данных PSCustomObject будет легче играть.

$result = Invoke-Sqlcmd2 -InputFile $sqlfile-ServerInstance $DB -As PSObject

Однако это, похоже, обрабатывает только первый запрос выбора и игнорирует второй.


person Inammathe    schedule 30.12.2015    source источник


Ответы (1)


Рассматривали ли вы выполнение CROSS JOIN в файле SQL? Рассмотрим следующее: здесь

Вы бы сделали что-то вроде:

SELECT * FROM Table1
CROSS JOIN Table2

И это даст вам все данные, связанные между обеими таблицами независимо от того, есть связь или нет. Если вы хотите СОЕДИНИТЬСЯ через отношения, проверьте некоторые другие соединения SQL, такие как LEFT JOIN, INNER JOIN и т. д.

person James Kirsch    schedule 30.12.2015
comment
Если вы хотите добавить определенные столбцы, вы просто замените * именами столбцов, такими как col1, col2 .. и т. д. - person James Kirsch; 30.12.2015
comment
Извините, я должен был быть более конкретным с SQL. Реальный пример того, как это будет работать, не будет работать ни с одним соединением. Например, select transtime, amount, accountid from #mytable1 select count(accountid),sum(amount) from #mytable1 Суммарные данные, к сожалению, не будут работать при объединении. В этом случае целью двух выходных данных будет: 1.) Отобразить некоторые данные из временной таблицы #mytable1 2.) Отобразить количество столбца accountid и сводку по столбцу суммы. Вы правы, это решение будет работать в других случаях. - person Inammathe; 30.12.2015
comment
Ах, хорошо, в этом случае, возможно, стоит изучить хранимые процедуры, если они подходят для вашего случая, поскольку я не слишком хорошо знаком с Powershell, это может помочь для некоторых SQL - person James Kirsch; 30.12.2015