sql join语句并故意在每个组中重复第一行

时间:2014-06-07 20:03:02

标签: sql join

我有标题和明细文件(例如发票标题和发票明细)

SELECT InvH, Line FROM InvHed join InvDet on (invH = invD) where VoidLine = ''

通常当你加入这些时,你会得到一个这样的列表:

Invoice  Line
123456    2
123456    3
123456    4
123456    6
123457    1
123457    2
123457    3

请注意,第一个细节线可能不会被编码为1.这里恰好是2。

我实际上想要构造一个SQL语句,以便第一个细节线重复。

Invoice  Line
123456    2
123456    2
123456    3
123456    4
123456    6
123457    1
123457    1
123457    2
123457    3

结果应按发票/行(已添加)

排序

2 个答案:

答案 0 :(得分:1)

尝试

SELECT InvH, Line FROM InvHed join InvDet on (invH = invD) where VoidLine = '' 
UNION ALL 
SELECT InvH, MIN(Line) FROM InvHed join InvDet on (invH = invD) where VoidLine = '' GROUP BY InvH

请注意,如果这对您很重要,您将需要指定结果的排序(您没有在问题中指出它。)

答案 1 :(得分:0)

这适用于Group and Order ......

SELECT InvH, Line 
FROM InvHed join InvDet on (invH = invD) 
WHERE VoidLine = '' 

  UNION ALL 

  SELECT InvH, MIN(Line) as Line
  FROM InvHed join InvDet on (invH = invD) 
  WHERE VoidLine = '' 
  GROUP BY InvH, Line
  ORDER BY InvH, Line