带子查询的多个条件(SWITCH 或 IIF)
Multiple Conditions with subquery (SWITCH or IIF)
我在查询中遇到了问题,如果车辆已售出、销售取消和重新销售,则 return 具有最近销售日期的车辆 ID 号(这是通过检查完成的如果与车辆相关的交易数量为奇数)
有时最近的交易日期不是最终销售日期而是取消交易(系统以不直观的顺序批处理/处理交易)。
注意:我使用的是 MS Acces
我需要什么帮助
编写查询以确定如果最近的交易 return 是取消交易,那么 return 第二个最近的交易。
SQL
SELECT DISTINCT N.vin,
N.[trans category],
N.[model category],
Max(N.[trans date])
FROM new_bbss N
WHERE N.[trans category] NOT LIKE '*Individual*'
AND ( N.[trans category] ) NOT LIKE '*Corporate*'
AND ( n.[trans category] ) NOT LIKE '*Partners*'
AND ( n.[trans category] ) NOT LIKE '*Special*'
AND ( n.[trans category] ) NOT LIKE '*Employee*'
AND ( n.[trans category] ) NOT LIKE '*Mobile*'
AND ( n.[trans category] ) NOT LIKE '*JLR FLEET*'
AND N.vin IN(SELECT vin
FROM new_bbss
WHERE [retailer code] LIKE 'R*'
AND new_bbss.vin NOT IN(SELECT vin
FROM cleansed_vins)
GROUP BY vin
HAVING Count(vin) > 1
AND Count(vin) MOD 2 = 1)
GROUP BY N.vin,
N.[trans category],
N.[model category]
数据结构
为什么不使用子查询消除 "cancel" 事务。请参见下面代码的第 5 行。
SELECT DISTINCT N.vin,
N.[trans category],
N.[model category],
Max(N.[trans date])
FROM (Select * from new_bbss where new_bbss.[trans category] NOT LIKE '*Cancel*') N
WHERE N.[trans category] NOT LIKE '*Individual*'
AND ( N.[trans category] ) NOT LIKE '*Corporate*'
AND ( n.[trans category] ) NOT LIKE '*Partners*'
AND ( n.[trans category] ) NOT LIKE '*Special*'
AND ( n.[trans category] ) NOT LIKE '*Employee*'
AND ( n.[trans category] ) NOT LIKE '*Mobile*'
AND ( n.[trans category] ) NOT LIKE '*JLR FLEET*'
AND N.vin IN(SELECT vin
FROM new_bbss
WHERE [retailer code] LIKE 'R*'
AND new_bbss.vin NOT IN(SELECT vin
FROM cleansed_vins)
GROUP BY vin
HAVING Count(vin) > 1
AND Count(vin) MOD 2 = 1)
GROUP BY N.vin,
N.[trans category],
N.[model category]
我在查询中遇到了问题,如果车辆已售出、销售取消和重新销售,则 return 具有最近销售日期的车辆 ID 号(这是通过检查完成的如果与车辆相关的交易数量为奇数)
有时最近的交易日期不是最终销售日期而是取消交易(系统以不直观的顺序批处理/处理交易)。
注意:我使用的是 MS Acces
我需要什么帮助
编写查询以确定如果最近的交易 return 是取消交易,那么 return 第二个最近的交易。
SQL
SELECT DISTINCT N.vin,
N.[trans category],
N.[model category],
Max(N.[trans date])
FROM new_bbss N
WHERE N.[trans category] NOT LIKE '*Individual*'
AND ( N.[trans category] ) NOT LIKE '*Corporate*'
AND ( n.[trans category] ) NOT LIKE '*Partners*'
AND ( n.[trans category] ) NOT LIKE '*Special*'
AND ( n.[trans category] ) NOT LIKE '*Employee*'
AND ( n.[trans category] ) NOT LIKE '*Mobile*'
AND ( n.[trans category] ) NOT LIKE '*JLR FLEET*'
AND N.vin IN(SELECT vin
FROM new_bbss
WHERE [retailer code] LIKE 'R*'
AND new_bbss.vin NOT IN(SELECT vin
FROM cleansed_vins)
GROUP BY vin
HAVING Count(vin) > 1
AND Count(vin) MOD 2 = 1)
GROUP BY N.vin,
N.[trans category],
N.[model category]
数据结构
为什么不使用子查询消除 "cancel" 事务。请参见下面代码的第 5 行。
SELECT DISTINCT N.vin,
N.[trans category],
N.[model category],
Max(N.[trans date])
FROM (Select * from new_bbss where new_bbss.[trans category] NOT LIKE '*Cancel*') N
WHERE N.[trans category] NOT LIKE '*Individual*'
AND ( N.[trans category] ) NOT LIKE '*Corporate*'
AND ( n.[trans category] ) NOT LIKE '*Partners*'
AND ( n.[trans category] ) NOT LIKE '*Special*'
AND ( n.[trans category] ) NOT LIKE '*Employee*'
AND ( n.[trans category] ) NOT LIKE '*Mobile*'
AND ( n.[trans category] ) NOT LIKE '*JLR FLEET*'
AND N.vin IN(SELECT vin
FROM new_bbss
WHERE [retailer code] LIKE 'R*'
AND new_bbss.vin NOT IN(SELECT vin
FROM cleansed_vins)
GROUP BY vin
HAVING Count(vin) > 1
AND Count(vin) MOD 2 = 1)
GROUP BY N.vin,
N.[trans category],
N.[model category]