Table Data
<table border=1>
<tr>
<td>9Code</td><td>10Code</td><td>10Approximate</td><td>10NoMap</td><td>10Combination</td><td>10Scenario</td><td>10ChoiceList</td><td>9Approximate</td><td>9NoMap</td><td>9Combination</td>
</tr>
<tr><td>04181</td><td>A493</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td></tr>
<tr><td>04181</td><td>A493</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>NULL</td><td>NULL</td><td>NULL</td></tr>
<tr><td>04181</td><td>B960</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>NULL</td><td>NULL</td><td>NULL</td></tr>
<tr><td>04181</td><td>B960</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td></tr>
<tr><td>04181</td><td>J200</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td></tr>
</table>
<br><br>
Desired Table Data
<table border=1>
<tr>
<td>9Code</td><td>10Code</td><td>10Approximate</td><td>10NoMap</td><td>10Combination</td><td>10Scenario</td><td>10ChoiceList</td><td>9Approximate</td><td>9NoMap</td><td>9Combination</td>
</tr>
<tr><td>04181</td><td>A493</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>NULL</td><td>NULL</td><td>NULL</td></tr>
<tr><td>04181</td><td>B960</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>NULL</td><td>NULL</td><td>NULL</td></tr>
<tr><td>04181</td><td>J200</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td></tr>
</table>
我希望以上显示为表格。我正在尝试运行查询以选择具有不同10Code列的所有列。如果有两个重复的10Code列值,则选择一个为null的值。因此当我运行sql查询时从MyTable选择distinct([10Code])我得到了所需的结果但是当我向查询添加更多列时,例如select My([10Code]),[10Approximate]来自MyTable,我得到了所有行。我想知道如何将count [10Code]> 0的条目分组,然后显示所有列。这是困难部分 当列出现多于1次时,选择列[9Approximate] 中具有NULL值的行。
如何获取剩余的列。
我的尝试:
select [10Code], COUNT([10Code]) AS NumOccurrences FROM MyTable GROUP BY [10Code]
HAVING ( COUNT([10Code]) > = 1 )
答案 0 :(得分:1)
当您将行数据分组从多行聚合到一个时,如果您想获得一些列,您可以提供适当的聚合函数并将列添加到分组依据。
另一种方法是通过代码将分组结果与源数据连接起来,并从适当的行中获取值:
select * from
(
select 10Code, COUNT(10Code) AS NumOccurrences
FROM test.table GROUP BY 10Code
) grouped
join test.table src on
src.10Code = grouped.10Code
and (src.9Approximate is null or grouped.NumOccurrences == 1)