[英]SQL QUERY complicated
可能有人请帮助我如何获得此。
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'
我想选择那些记录作是不是“99999”,它的另一LINE
在驱动程序表中给出。
例如:在驱动程序中有两行,分别是“ SERPTINBLT”和“ CAMSHAFT”,因此使这两行的行始终为“ 99999”,如果包含“ 99999”以外的其他行,则在这种情况下应出现在输出中CAMSHAFT”有两个品牌,分别是“ 51”和“ 99999”。
CAMSHAFT| DYC5060695| 51| 575|1989
使用INNER JOIN通过@DRIVER
表过滤行,并使用WHERE子句过滤错误MAKE
行:
SELECT m.*
FROM @MYTABLE m INNER JOIN @DRIVER d
ON m.LINE = d.Line
WHERE m.MAKE != '99999'
很简单,您将必须使用@Driver
的INNER JOIN
并排除在@Mytable
具有'99999'的@Mytable
使用以下代码:
SELECT * FROM @DRIVER D
INNER JOIN @MYTABLE M
ON D.[Line] = M.[LINE]
WHERE M.[MAKE] <> '99999'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.