Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何合并具有空值的SQL行_Sql_Sql Server_Tsql - Fatal编程技术网

如何合并具有空值的SQL行

如何合并具有空值的SQL行,sql,sql-server,tsql,Sql,Sql Server,Tsql,对于相同的数据,我有许多行,但每行都填充了不同的列。我想把所有这些行合并成一行。我尝试了分组方式,但数据集有1000列。有什么建议吗 SELECT TOP 100 * FROM [Hilltopsamplerfix].[dbo].[tempHilltopWaterQualityExtractPivot] WHERE [SiteName] = 'site' AND [RunDate] = 'xxx' 数据示例 我无法粘贴图像,因为我的声誉低于10 +----------------------

对于相同的数据,我有许多行,但每行都填充了不同的列。我想把所有这些行合并成一行。我尝试了分组方式,但数据集有1000列。有什么建议吗

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语句,请再次包含并测试。