如何解决比较mssql每列中的所有数据
我有一张桌子,如下表
int main(){
FILE * fr = fopen("file.csv","r");
char save[500],line[200],to_find[50];
int oneByOne = 0,numberOfFields=8;
char *word = NULL;
printf("Enter the ID card number: ");
scanf("%s",to_find);
if(all_digits(to_find) && strlen(to_find) == 13){
while(fgets(line,200,fr)){
word = strtok(line,"\n");
strcpy(save,line);
if (strstr(save,to_find)){
char *wordone = strtok(save,",");
while (wordone != NULL){
printf("Here are your details: %s\n",wordone);
wordone = strtok(NULL,");
}
}
}
fclose(fr);
printf("Found. Hello World!\n");
}
else {
printf("enter correclty\n");
}
return 0;
}
我的查询输出应为单行
OrderId Carrier Truck Trailer
10001 ABC TruckA TrailerA
10001 ABC TruckA TrailerA
10001 ABC TruckB TrailerA
10001 ABC TruckC TrailerB
10001 ABC TruckC TrailerD
必须应用逻辑,就像每列包含相同的值,然后该值必须在该特定列中,否则它将为NULL
我尝试了以下查询,但没有得到正确的输出
OrderId Carrier Truck Trailer
10001 ABC NULL NULL
解决方法
必须应用逻辑,就像每列包含相同的值,然后该值必须在该特定列中,否则它将为NULL
使用聚合和条件逻辑。我发现比较min()
和max()
是直接的方法:
select
orderid,case when min(carrier) = max(carrier) then min(carrier) end carrier,case when min(truck) = max(truck) then min(carrier) end truck,case when min(trailer) = max(trailer) then min(carrier) end trailer
from orderdetails
group by orderid
,
似乎您可以将CASE
和COUNT
一起使用MAX
:
SELECT CASE COUNT(DISTINCT OrderID) WHEN 1 THEN MAX(OrderID) END AS OrderID,CASE COUNT(DISTINCT Carrier) WHEN 1 THEN MAX(Carrier) END AS Carrier,CASE COUNT(DISTINCT Truck) WHEN 1 THEN MAX(Truck) END AS Truck,CASE COUNT(DISTINCT Trailer) WHEN 1 THEN MAX(Trailer) END AS Trailer
FROM dbo.YourTable;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。