2017-09-05 38 views
1

我有一个数据库表(名为: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

更好地将连接条件添加到您的查询 – LONG

+0

您可以请张贴一些示例数据和预期结果。 –

+0

闻起来像一只PIVOT – scsimon

回答

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 

希望这会有所帮助。

+0

这正是我所期待的。谢谢 – FFS88