【发布时间】:2014-02-24 06:05:28
【问题描述】:
我在试图完成一些听起来相当简单的事情的逻辑上磕磕绊绊,但我不知道该怎么做。
我有一个包含“UserID”和“GroupID”的用户表。用户可以属于多个组,因此他们可以多次出现在表中。
我还有一个表格,其中包含“UserTimeFrame”、“GroupID”、“Content1”、“Content2”、“Content3”等不同组“GroupContentTable”的内容。
我遇到的问题是,如果一个用户只属于一个组,我想为该用户输出 3 个属于该组的“内容”,如果一个用户属于两个组,我想输出 2 个一组,另一组为用户,如果他们属于 3 个组,我想显示 3 个内容,但每个组只显示一个。
我在想一些类似的事情(抱歉,不太精通 SQL)
SELECT u.UserID, CASE u.GroupID
WHEN 'GroupID' == 'Group1' AND 'c.UserFrequency' ==1 THEN 'c.Content1' AND 'Content2' AND 'Content3' END , c.UserTimeFrame, c.Content1, c.Content2, c.Content3
FROM UserTable u INNERJOIN UserContentTable c
ON u.GroupID = c.GroupID
我正在考虑加入表格并使用 CASE 语句设置不同的条件,但它开始分崩离析。
这就是我所拥有的:
用户表
UserID | GroupID
ID1 | Group 1
ID1 | Group 2
ID2 | Group 3
ID1 | Group 3
ID3 | Group 2
ID3 | Group 3
GroupContentTable
GroupID | UserTimeSpan | Content1 | Content2 | Content3
Group1 | 1 | UserTxt11 | UserTxt12 | UserTxt13
Group2 | 1 | UserTxt21 | UserTxt22 | UserTxt23
Group3 | 1 | UserTxt31 | UserTxt32 | UserTxt33
Group1 | 2 | UserTxt121 | UserTxt122 | UserTxt123
我想输出这个:
输出表
UserID | UserTimeSpan | UserContent1 | UserContent2 | UserContent3
ID1 | 1 | UserTxt11 | UserTxt21 | UserTxt31
ID2 | 1 | UserTxt31 | UserTxt32 | UserTxt33
ID3 | 1 | UserTxt21 | UserTxt22 | UserTxt31
联接将为每个用户输出一行,因此对于用户 ID1,将有 3 行,但我希望它只输出 1 行,根据他们的 GroupID 具有适当的内容。
我不确定这是否可能。我什至愿意改变结构。
【问题讨论】:
标签: sql sql-server