Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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

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 多实例的CASE函数_Sql_Sql Server - Fatal编程技术网

Sql 多实例的CASE函数

Sql 多实例的CASE函数,sql,sql-server,Sql,Sql Server,我希望返回一个表,每个列都标记用户是否在给定的月份使用了某个产品。数据如下所示: User Date Product 001 1/1/2019 A 001 1/1/2019 A 001 1/1/2019 B 002 1/1/2019 A 002 1/1/2019 A 003 1/1/2019 C 004 1/1/2019 A 004 1/1/2019 B 004

我希望返回一个表,每个列都标记用户是否在给定的月份使用了某个产品。数据如下所示:

User    Date        Product
001     1/1/2019    A
001     1/1/2019    A
001     1/1/2019    B
002     1/1/2019    A
002     1/1/2019    A
003     1/1/2019    C
004     1/1/2019    A
004     1/1/2019    B
004     1/1/2019    C
我希望SQL代码会产生这样的结果(即,每个产品类型对应一列,如果该产品出现在数据行中,则为1或0):

目前,即使存在多个实例,每列中也只有一个1。(这是在SQL Server中)


谢谢

您可以使用条件聚合:

select user,
       max(case when product = 'A' then 1 else 0 end) as a,
       max(case when product = 'B' then 1 else 0 end) as b,
       max(case when product = 'C' then 1 else 0 end) as c
from  t
group by user

您可以使用条件聚合:

select user,
       max(case when product = 'A' then 1 else 0 end) as a,
       max(case when product = 'B' then 1 else 0 end) as b,
       max(case when product = 'C' then 1 else 0 end) as c
from  t
group by user

MySQL还是SQL Server?它们是不同的产品…请向我们展示您的尝试。您声明的要求是针对给定的月份,但数据都是相同的日期,因此无法区分,并且您的输出表没有指示/显示您是否需要几个月的数据。我假设查询只需要拉取给定月份的数据?您真的只有三种产品吗?或者您是否需要查询根据当月发现的产品动态排列列?实际数据集有9个产品,但列应该是一致的(如果该用户有产品,则仅为1或0)MySQL或SQL Server?它们是不同的产品…请向我们展示您的尝试。您声明的要求是针对给定的月份,但数据都是相同的日期,因此无法区分,并且您的输出表没有指示/显示您是否需要几个月的数据。我假设查询只需要拉取给定月份的数据?您真的只有三种产品吗?或者您需要查询根据当月发现的产品动态排列列吗?实际数据集有9个产品,但列应该是一致的(如果该用户的产品存在,则仅为1或0),我最初使用的是COUNT(凯斯……但马克斯似乎在工作。我想知道why@ryans1,您知道如何为给定的月份添加where子句吗?@DaniDev…您只需在
group by
@GordonLinoff之前添加一个
where
子句,是的,只是想确保他(@ryans1)拥有他所需要的一切。我最初使用的是COUNT(凯斯……但马克斯似乎在工作。我想知道why@ryans1,您知道如何为给定的月份添加where子句吗?@DaniDev…您只需在
group by
@GordonLinoff之前添加一个
where
子句,是的,只是想确保他(@ryans1)拥有所需的一切。