2012-07-27 471 views
1

DATA SETSSQL - 嵌套查询查询

我想选择所有dealercode(不同)和introducercode与iapn。但iapn只能是最高价值。

例如

dealercode = 7 and iapin = 3 and introducercode = 3 

这样的(它必须是一个DEALERCODE唯一的价值)

这是我的查询:

SELECT DISTINCT 
     dealercode, iapin as iapin, 
     (SELECT introducercode) as introducecode 
    FROM 
     dealerplacement d 
    where 
     exists (SELECT MIN(iapin) FROM dealerplacement) 
    ORDER BY 
     dealercode, iapin ASC 

我重视这条信息数据集的代码。

enter image description here

这是结构。我想要得到如下结果。 DEALERCODE 1200 iapn 003 and introducercode 203. only。

当前数据库如下。

1200 001 201 
    1200 002 202 
    1200 003 203 

请帮我解决这个问题。

回答

4

为什么不直接使用MAXGROUP BY还是有别的东西,我很想念

SELECT dealercode, 
     introducercode, 
     MAX(iapin) iapin 
FROM dealerplacement d 
GROUP BY dealercode, 
      introducercode 

Aggregate Functions (Transact-SQL)

编辑

重新改变你的要求,你可能想尝试像

SELECT d.* 
FROM dealerplacement d INNER JOIN 
     (
      SELECT dealercode, 
        MAX(iapin) iapin 
      FROM dealerplacement d 
      GROUP BY dealercode 
     ) dM ON d.dealercode = dM.dealercode 
       AND d.iapin = dM.iapin 
+0

感谢reply.But结果是一样的我post.It包括所有的细节.. – TRS 2012-07-27 05:38:10

+1

可以您可以在发布数据的问题,以及您对导入代码的期望是什么? – 2012-07-27 05:41:31

+0

我将帖子添加为answer.please检查它。 – TRS 2012-07-27 05:57:48

1

看起来你想要MINIMUM iapin根据你的例子结果。为了获得适当的相应introducecode,你需要使用一个子查询:

SELECT a.dealercode, a.iapin, a.introducecode 
FROM dealerplacement a 
INNER JOIN 
(
    SELECT dealercode, MIN(iapin) AS miniapin 
    FROM dealerplacement 
    GROUP BY dealercode 
) b ON a.dealercode = b.dealercode AND a.iapin = b.miniapin