繁体   English   中英

SQL查询复杂

[英]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'

很简单,您将必须使用@DriverINNER 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM