SQL - 嵌套的选择查询

时间:2012-07-27 05:29:12

标签: sql sql-server

DATA SETS

我想用iapn选择所有dealercode(不同)和introducercode。 Bbut iapn必须是最高价值。

e.g。

dealercode = 7 and iapin = 3 and introducercode = 3 
像那样(这只是经销商的唯一价值)

这是我的疑问:

  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和介绍人203.仅。

当前数据库如下。

  1200  001  201
  1200  002  202
  1200  003  203

请帮我解决这个问题。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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