Sql server SQL Server:根据表1中的值返回特定表2列中的值

Sql server SQL Server:根据表1中的值返回特定表2列中的值,sql-server,Sql Server,我有一个从两个表中获取数据的查询 交易表包含周id、客户id、upc12、销售美元 产品表包含upc12第1列第2列第3列 我希望我的查询返回products表中的值,该值基于事务表中的customer\u idcustomer\u id=1应返回column\u 1,customer\u id=2应返回column\u 3,等等 SELECT t.week_id, customer_id, upc12, p.___________ sum(t.sale

我有一个从两个表中获取数据的查询

  • 交易
    表包含周id、客户id、upc12、销售美元
  • 产品
    表包含upc12第1列第2列第3列
我希望我的查询返回products表中的值,该值基于事务表中的
customer\u id
customer\u id=1
应返回
column\u 1
customer\u id=2
应返回
column\u 3
,等等

SELECT
    t.week_id, 
    customer_id, 
    upc12, 
    p.___________ sum(t.sales_dollars)
FROM 
    transaction t, products p
WHERE 
    t.upc_12 = p.upc_12
GROUP BY 
    t.week_id, customer_id, upc12, p.___________
对不起,如果这没有意义,但我的研究不是很好,因为我不知道如何正确地表达我的问题。你可能猜到我是SQL新手


谢谢

这里有一种方法:

;WITH cte as
(
SELECT
    t.week_id, 
    customer_id, 
    upc12, 
    CASE customer_id
        WHEN 1 THEN p.Column_1
        WHEN 2 THEN p.Column_2
        WHEN 3 THEN p.Column_3
    END As ColByCustomer,
    t.sales_dollars
FROM transaction t
INNER JOIN products p on t.upc_12 = p.upc_12
)

SELECT week_id, customer_id, upc12, ColByCustomer, SUM(sales_dollars)
FROM cte
GROUP BY week_id, customer_id, upc12, ColByCustomer

以下是一种方法:

;WITH cte as
(
SELECT
    t.week_id, 
    customer_id, 
    upc12, 
    CASE customer_id
        WHEN 1 THEN p.Column_1
        WHEN 2 THEN p.Column_2
        WHEN 3 THEN p.Column_3
    END As ColByCustomer,
    t.sales_dollars
FROM transaction t
INNER JOIN products p on t.upc_12 = p.upc_12
)

SELECT week_id, customer_id, upc12, ColByCustomer, SUM(sales_dollars)
FROM cte
GROUP BY week_id, customer_id, upc12, ColByCustomer

-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔的表格列表样式被正确的ANSI
JOIN
语法所取代,并且它的使用是不鼓励的,因为它无法正确格式化..您的意思是:选择。。。从事务t连接t.upc12=p.upc12上的产品p?那么您想要一个case语句?e、 g.
案例客户\u id当1时,则为col1当2时,则为col3结束
?-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔的表格列表样式被正确的ANSI
JOIN
语法所取代,并且它的使用是不鼓励的,因为它无法正确格式化..您的意思是:选择。。。从事务t连接t.upc12=p.upc12上的产品p?那么您想要一个case语句?e、 g.
案例客户\u id当1时,然后是col1当2时,然后是col3结束
?谢谢!!这个案例正是我所需要的,我不知道这个函数。简直太神奇了!很乐意帮忙:-)。如果答案解决了您的问题,您应该将其标记为已接受,以便其他人知道问题已解决。谢谢!!这个案例正是我所需要的,我不知道这个函数。简直太神奇了!很乐意帮忙:-)。如果某个答案解决了你的问题,你应该将其标记为已接受,以便其他人知道问题已解决。