【发布时间】:2013-06-28 14:12:25
【问题描述】:
我有一个 SQL 查询,它从必须按此顺序的表中提取列
物品编号, 帕尔姆斯, 移动列表, 消息 ID。我在查询中还有一些要求必须保留在那里,例如 UserCode = automation 并且日期设置为当天前一天。
一行的 Parms 输出示例是这样的
CURRENT OUTPUT
Parms:
V51370,Move List,M-000001
--
REQUIRED OUTPUT
Media: v51370
Comments: Was Removed From
Move List: M-000001
我想要做的是将此 Parms 列拆分为两个单独的列,它们位于 Item Id 和 Move list Column 之间。第一列应称为 Media,它从 Parms Column:v51370 中提取前六个字符。第二列是 cmets,如果 MsgId 为 1,则注释应为:Was Removed from.
任何人都可以对我可以测试的可能查询提出任何建议吗?我不确定在哪里放置 Parms 列拆分。将不胜感激。
请注意:我使用的是 SQL Server Management Studio 2008,表名是 JnlList。
1 SAMPLE ROW (SELECT * FROM JNLLIST):
ItemId: 2
Date: 20122102.124652563
Object: S-000001
MsgID: 1
Parms: V86143,Scratch List,S-000001
Delimiter: -
UserCode: Automation
ActionId: 5
List Type: S
【问题讨论】:
-
你能告诉我们你到目前为止尝试了什么吗?或许还有相关表格中的一些样本数据?
-
@DevN00B 我已经用表格中的示例数据更新了问题。我希望这会有所帮助。
-
Parms 列包含 3 个逗号分隔值,因此您不希望将其拆分为 3 个吗?
-
您可以使用 SUBSTRING(Parms, 1, 6) AS Media 之类的方法提取前 6 个字符
-
@SelectDistinct 是的,拆分成 3 也可以。
标签: sql sql-server date casting split