【发布时间】:2023-02-09 02:05:32
【问题描述】:
我正在将数据导出到一个平面文件以导入到 SIEM 中。有没有办法为每个项目显示为“列名=数据”?
SELECT [Description],[MessageDescription]
,[CardNumber],[TimeStamp_Server],[SPMDescription][CardHolderID],[FirstName],[MiddleName],[LastName],[CardStatusID],[CardStatusDescription],[Imprint]
,[TransactionNumber]
FROM [DB].[dbo].[Message]
WHERE convert(varchar(10), TimeStamp_Server, 120) = convert(varchar(10), getdate(), 120)
这是它当前在平面文件中的显示方式。
描述、消息描述、卡号、时间戳_服务器、持卡人 ID、名字、中间名、姓氏、CardStatusID、CardStatusDescription、印记、交易号 North Entry,AccessGrantedNoEntry,0,2023-02-08 09:52:19,零售中心C004改装PXL250-2DOOR,,,,,,,527312
我希望每一行都显示为这样
Description = North Entry,MessageDescription = AccessGrantedNoEntry,CardNumber = 0,TimeStamp_Server = 2023-02-08
... 等等。
【问题讨论】:
-
在提出问题时,您需要提供最小可重现的例子: (1) DDL 和示例数据填充,即 CREATE 表加上 INSERT、T-SQL 语句。 (2) 您需要做什么,即逻辑,以及您尝试在 T-SQL 中实现它。 (3) 基于上面 #1 中示例数据的期望输出。 (4) 您的 SQL Server 版本 (SELECT @@version;)
-
我认为您正在寻找 UNPIVOT 或 EAV,但如果没有正确的格式,您的问题是不可读的。
-
问题不在于 SQL。问题是写出文件,我们没有看到任何代码。
-
此外,如果两个日期时间的日期值相等,则转换为 varchar 是最糟糕的比较方法。
-
所以你想要在每一行上重现每个列名?这将显着增加文件的大小!只需使用
select concat('columnName = ', ColumnName)Columename, ...
标签: sql-server