带/分组的T-SQL查询

时间:2010-11-11 15:00:08

标签: tsql group-by distinct

我的查询类似于以下

SELECT t1.Name,
       t2.ID,
       t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.ID = t2.ID

这给了我一大堆价值观。但我真正想要的只是t1.Name的不同值,但t2.ID和t2.name的相关值。

我能想到的唯一方法是使用Group By子句,但是我必须在t2.ID和t2.name上使用聚合函数。我使用了MIN / MAX但是我得到的t2.ID和t2.name的值可能不是来自同一行。

我确信这里有一些简单的东西。感谢帮助人员

编辑: 这是实际查询

SELECT (wi.wi_wpsnumbers), ws.*
FROM wi_weld_instance wi
INNER JOIN wlds_weld_section ws ON wi.weldinstanceid = ws.weldinstanceid

这是返回的前几行:

*999             100633    106*
*120,200,400     100656 44*
120,200,400   100656    46
120,200,400   100656    47
120,200,400   100656    48
120,200,400   100656    49
120,200,400   100656    50
120,200,400   100656    51
*123             100657 46*
123              100658 46
123              100659 46
123              100660 46

所以我真正想要的是第一行,然后是第二行......其中123出现在第一列等等。我用星号标记了这些行。

2 个答案:

答案 0 :(得分:0)

DISTINCT个关键字。

SELECT DISTINCT t1.Name,
       t2.ID,
       t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.ID = t2.ID

有关来自MSDN的DISTINCT的相关信息:'指定只有唯一的行才能出现在结果集中。出于DISTINCT关键字的目的,空值被认为是相等的。'

答案 1 :(得分:0)

听起来你只需要使用DISTINCT关键字,你似乎已经暗示了这一点。

SELECT  DISTINCT(t1.Name),
   t2.ID,
   t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.ID = t2.ID