【问题标题】:SQL create new columns based on product classification and client buying the productSQL根据产品分类和客户购买产品创建新列
【发布时间】:2021-07-06 19:14:44
【问题描述】:

我有一张客户表和每个客户购买的产品表

为了唤起每个客户对任何产品的兴趣,我编写了以下 SQL 语句

SELECT 
t1.ClientID
,t2.ProductID
  FROM [DTBA].[dbo].[Client] t1
  inner join [DTBA].[dbo].[Product] t2 on t2.ClientID = t1.ClientID

这将向我返回他们购买的客户和产品的完整列表,如下所示

Client ID Product ID
100017 7000
100018 7001
100019 7000
100021 7002
100024 7001
100025 7001
100028 7003

我想做的是创建一个 SQL 查询,如果客户是否按照下面的示例购买产品,它将返回 clientID 和每个 productID 的列以及二进制文件的结果

ClientID ProductID 7000 7001 7002 7003
100017 7000 1 0 0 0
100018 7001 0 1 0 0
100019 7000 1 0 0 0
100021 7002 0 0 1 0
100024 7001 0 1 0 0
100025 7001 0 1 0 0
100028 7003 0 0 0 1

对于定义每个列和检索二进制信息列的任何帮助,我将不胜感激

【问题讨论】:

  • 确实尝试粘贴文本,但到处都是。我不需要创建一个新表,对我来说一个 select 语句就足够了。我没有链接到任何外部站点,这些图像是从我的 xls 复制粘贴到我想要实现的目标。如果这对您不方便,我深表歉意,但如果可能的话,我宁愿寻求答案,如果没有,无论如何,谢谢
  • @stickybit 感谢您的 cmets,我尝试使用我以前没有见过的格式提出问题。请让我知道这是否是您正在寻找的内容,如果您能提供任何帮助,请再次感谢。真的对投票问题不感兴趣,而是对找到解决方案感兴趣,但是,如果投票是对未正确提供的数据的表达,那么我在理解一切如何运作方面会遇到一些问题......如果我是一名 IT 人员,就不会在这里我想这从我非常基本的问题中可以清楚地看出。感谢您的帮助

标签: sql


【解决方案1】:

我认为回答您的问题的最简单方法是使用一大堆案例陈述。像这样的:

SELECT
ClientID,
ProductID,
SUM( CASE WHEN ProductID = 7000 THEN 1 ELSE 0 END ) AS 7000, 
SUM( CASE WHEN ProductID = 7001 THEN 1 ELSE 0 END ) AS 7001,
SUM( CASE WHEN ProductID = 7002 THEN 1 ELSE 0 END ) AS 7002,
SUM( CASE WHEN ProductID = 7003 THEN 1 ELSE 0 END ) AS 7003
  FROM [DTBA].[dbo].[Client] t1
  inner join [DTBA].[dbo].[Product] t2 on t2.ClientID = t1.ClientID
  GROUP BY 1, 2 

【讨论】:

  • 非常感谢,非常感谢。我在 xls 中以 vlookup 的方式执行此操作,但不知道如何在 SQL 中执行此操作。真的很感谢,真的很感谢。我会试一试,让你知道。再次感谢
  • 没问题,让我知道它是否有效。如果是这样,你能接受我的解决方案吗?谢谢
  • 完美运行!非常感谢你的帮助!祝你有个美好的一天!刚刚接受了您的解决方案!
猜你喜欢
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2016-12-03
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
相关资源
最近更新 更多