SQL QUERY很复杂

时间:2015-10-08 08:16:57

标签: sql sql-server tsql

愿任何人帮助我如何获得这个。

Add to Subversion

我想选择那些制作不是'99999'的记录,其中DECLARE @MYTABLE TABLE ( LINE VARCHAR (50), SKU VARCHAR (50), MAKE VARCHAR (50), MODEL VARCHAR (50), YEAR VARCHAR (50) ) INSERT @MYTABLE SELECT 'AIRFILTER','KNFHU-1200', '629','23081', '2013' union all SELECT 'SERPTINBLT','TCI743812', '99999', '727', '1972' union all SELECT 'CAMSHAFT','DYC5060695', '51', '575', '1989' union all SELECT 'CAMSHAFT','DYC5060695', '99999', '575', '1989' union all SELECT 'HEADLIGHTB','COM08-443-8', '47', '458', '1994' union all SELECT 'ATTRNKCKCB','DTL03-1394', '55', '709', '1992' DECLARE @DRIVER TABLE ( Line VARCHAR (50) ) INSERT @DRIVER SELECT 'SERPTINBLT' UNION ALL SELECT 'CAMSHAFT' 在驱动程序表中给出。

例如:驱动程序中可用的两行“SERPTINBLT”和“CAMSHAFT” 因此,对于这两行应该始终为“99999”,如果它包含“99999”以外,它应该出现在输出中 在这种情况下,“CAMSHAFT”行有两个品牌,即“51”和“99999”。

预期输出

LINE

2 个答案:

答案 0 :(得分:0)

使用 INNER JOIN @DRIVER表过滤行,并使用 WHERE 子句过滤错误MAKE的行:< / p>

SELECT m.*
FROM @MYTABLE m INNER JOIN @DRIVER d
  ON m.LINE = d.Line
WHERE m.MAKE != '99999'

答案 1 :(得分:0)

非常简单,您必须使用INNER JOIN的{​​{1}}并排除@Driver中已制作'99999'的记录

使用以下代码:

@Mytable