我有一个数据库表(名为:imitidx_sql),其中包含我公司所有50,000多个零件号的列表。包含此内容的列称为" item_no"。我想创建一个表的视图,该视图根据项目编号返回字段。例如,我希望视图中的字段标题为FloorAssembly,字段应包含100个左右的项目编号,如' 090-40 ___- '。在视图的下一个字段中,我想返回我的两个空数(应该大约10个左右),这些数字类似于' 557-05186 - '。到目前为止,我可以通过使用子查询
来实现这一目标SELECT DISTINCT FloorAssemblyNumber, TwoVoid, ThreeVoid
FROM
(SELECT DISTINCT item_no AS FloorAssemblyNumber
FROM imitmidx_sql
WHERE item_no LIKE '090-40___-__')
AS FloorAssemblyNumber,
(SELECT DISTINCT item_no AS TwoVoid
FROM imitmidx_sql
WHERE item_no LIKE '557-05186-__')
AS TwoVoid,
(SELECT DISTINCT item_no AS ThreeVoid
FROM imitmidx_sql
WHERE item_no LIKE '557-05128-__')
AS ThreeVoid
或者我可以通过以下方式获得相同的结果:
SELECT a.item_no AS FloorAssemblyNumber, b.item_no AS TwoVoid, c.item_no AS ThreeVoid5
FROM [002].[dbo].[imitmidx_sql]a , [002].[dbo].[imitmidx_sql]b, [002].[dbo].[imitmidx_sql]c
WHERE a.item_no LIKE '090-40___-__' AND b.item_no LIKE '557-05186-__' AND c.item_no LIKE '557-05128-__'
但是,这两个查询似乎都返回了各个项目编号的所有可能组合。我想要的是选择所有不同的项目编号并在各自的列中(与其他列没有任何关系),如果选择了所有必需的数字,则显示空值。
示例数据:
item_no
090-30811-00
090-30812-00
090-40000-00
090-40000-01
090-40000-10
090-40000-11
090-40000-12
090-40001-00
557-05186-00
557-05186-01
557-05186-03
557-05187-00
557-05200-52
预期结果:
FloorAssembly | TwoVoid
090-40000-00 | 557-05186-00
090-40000-01 | 557-05186-01
090-40000-10 | 557-05186-03
090-40000-11 |
090-40000-12 |
090-40001-00 |
我为糟糕的格式道歉,我是新来发布的。 谢谢你的时间,
FS
答案 0 :(得分:0)
我认为Case声明可以为您服务。试试这个 -
SELECT DISTINCT CASE WHEN item_no LIKE '090-40___-__' THEN item_no ELSE NULL END AS FloorAssemblyNumber,
CASE WHEN item_no LIKE '557-05186-__' THEN item_no ELSE NULL END AS TwoVoid,
CASE WHEN item_no LIKE '557-05128-__' THEN item_no ELSE NULL END AS ThreeVoid
FROM imitmidx_sql
希望这有帮助。