格式化SQL查询输出:列标题后跟值

时间:2017-11-02 15:29:36

标签: sql-server csv sqlcmd

如果其他地方已经回答了类似的问题,请原谅我,但此时我还没有找到。

我试图格式化SQL Server查询的结果(通过sqlcmd),以便输出是一个CSV文件,首先是列标题,然后是值。查询将只返回一个记录的值。

作为一个例子,这里有一条我可以从桌子上拿出来的记录:

InputFileName InputFileSizeBytes JobId Steps NumSteps
------------- ------------------ ----- ----- --------
TestData.dat  1024               32768 1     2

有了这些数据,我想生成一个如下所示的CSV文件:

InputFileName,TestData.dat
InputFileSizeBytes,1024
JobId,32768
Steps,1
NumSteps,2

到目前为止,我所做的一切都没有奏效。例如,我尝试使用常量字符串UNION值,并给它们一个顺序:

SET NOCOUNT ON;
SELECT 'InputFileName' AS InputFileName,
       'InputFileSizeBytes' AS InputFileSizeBytes,
       'JobId' AS JobId,
       'Steps' AS Steps,
       'NumSteps' AS NumSteps,
       'ClientEmailMessage' AS ClientEmailMessage,
       'ClientContactInfo' AS ClientContactInfo,
       'DTInQueueUTC' AS DTInQueueUTC,
       1 AS ordering
    FROM HS_JOB_QUEUE
UNION
SELECT InputFileName, 
       InputFileSizeBytes, 
       JobId, 
       Steps, 
       NumSteps, 
       ClientEmailMessage, 
       ClientContactInfo, 
       DTInQueueUTC,
       2 AS ordering
    FROM HS_JOB_QUEUE
    WHERE JobId = 79000
ORDER BY ordering;

这根本不起作用 - sqlcmd吐出一个错误,说明常量不能用于UNION操作。

您对如何使其发挥作用有任何建议吗?

0 个答案:

没有答案