select DISTINCT a.Schooldistricttown, a.Schooldistrictnum
from [Legacy].[dbo].[MyTables] as a
它返回:
你能告诉我如何只出现一次a.Schooldistricttown
吗?
我尝试过使用DISTINCT
和GROUP BY
。但它不起作用。
注意:我还需要显示两个列。
答案 0 :(得分:1)
有两个选项,如果您在Schooldistrictnum
中获得哪个值无关紧要,那么用MAX()/MIN()
分组将解决此问题:
SELECT a.Schooldistricttown,MAX(a.Schooldistrictnum)
from [Legacy].[dbo].[MyTables] a
GROUP BY a.Schooldistricttown
如果您关心,请使用ROW_NUMBER()
:
SELECT s.Schooldistricttown,s.Schooldistrictnum
FROM (
SELECT a.Schooldistricttown,a.Schooldistrictnum,
ROW_NUMBER() OVER(PARTITION BY a.Schooldistricttown ORDER BY a.<ORDER_COLUMN>) as rnk
from [Legacy].[dbo].[MyTables] a) s
WHERE s.rnk = 1
您需要将<ORDER_COLUMN>
替换为您决定使用哪个值的实际列
答案 1 :(得分:0)
如果您想要所有Schooldistrictnum
,请使用此
SELECT DISTINCT
a.Schooldistricttown,
(
SELECT DISTINCT
ina.Schooldistrictnum + ', ' AS [text()]
FROM
[Legacy].[dbo].[MyTables] as ina
WHERE
ina.Schooldistricttown = a.Schooldistricttown
FOR XML PATH ('')
) AS Schooldistrictnum
FROM [Legacy].[dbo].[MyTables] as a