如何合并具有空值的SQL行
对于相同的数据,我有许多行,但每行都填充了不同的列。我想把所有这些行合并成一行。我尝试了分组方式,但数据集有1000列。有什么建议吗如何合并具有空值的SQL行,sql,sql-server,tsql,Sql,Sql Server,Tsql,对于相同的数据,我有许多行,但每行都填充了不同的列。我想把所有这些行合并成一行。我尝试了分组方式,但数据集有1000列。有什么建议吗 SELECT TOP 100 * FROM [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractPivot] WHERE [SiteName] = 'site' AND [RunDate] = 'xxx' 数据示例 我无法粘贴图像,因为我的声誉低于10 +----------------------
SELECT TOP 100 *
FROM [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractPivot]
WHERE [SiteName] = 'site' AND [RunDate] = 'xxx'
数据示例
我无法粘贴图像,因为我的声誉低于10
+------------------------------+
| Site column1 column2 column3 |
+------------------------------+
| SITE1 NULL NULL 76 |
| SITE1 NULL 23 NULL |
| SITE1 NULL NULL NULL |
+------------------------------+
期望输出:
+------------------------------+
| Site column1 column2 column3 |
+------------------------------+
| SITE1 NULL 23 76 |
+------------------------------+
您需要使用
分组依据
:
select site, max(column1) as column1, max(column2) as column2, . . .
from [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractPivot]
group by site;
您可以从information\u schema.columns
获取表中的列,并在SQL或Excel中构造逻辑。比如说
select ' max(' + column_name + ') as ' + column_name + ', '
from information_schema.columns
where table_name = 'tempHilltopWaterQualityExtractPivot' and
column_name <> 'site';
选择“max(“+column\u name+”)作为“+column\u name+”,”
从信息_schema.columns
其中,表_name='tempHilltopWaterQualityExtractPivot'和
列_名称“站点”;
然后将结果复制到查询窗口中。根据Gordon在下面的SQL中尝试此操作
Declare @Cols Varchar(Max)
select @Cols= coalesce(@Cols+',', '')+ ' max(' + column_name + ') as ' + column_name
from information_schema.columns
where table_name = 'tempHilltopWaterQualityExtractPivot' and Column_Name <> 'site'
Declare @Query Varchar(max)
SET @Query='Select Site, '+ @Cols+' From tempHilltopWaterQualityExtractPivot Group by Site'
EXEC(@Query)
Declare@Cols Varchar(最大值)
选择@Cols=coalesce(@Cols+',','')+max('+column\u name+')作为'+column\u name'
从信息_schema.columns
其中,表名称='tempHilltopWaterQualityExtractPivot'和列名称'site'
声明@Query Varchar(最大值)
按站点从tempHilltopWaterQualityExtractPivot组中设置@Query='Select站点'+@Cols+'
EXEC(@Query)
您至少需要向我们展示您的输入和所需的输出。谢谢戈登,非常感谢您的帮助。我尝试了你提供的第二个脚本。但是输出是“(没有列名)”,我尝试了几种方法使其工作,但无法。@PythonGeo。您可以编辑您的问题并输入您得到的查询的示例吗?嗨,Gordon,我正在用python进行尝试,因此可能不适合SQL问题。谢谢Selva。但我只能得到“命令成功完成”作为回报。没有生成表。您好,Geo,希望您能一次性执行整个脚本,而不排除EXEC语句。在我的环境中,它运行良好,并从表中返回最大结果。如果您删除了EXEC语句,请再次包含并测试。