我试图减少这个查询。所以我会稍微简化一下。这是我想要的数据:
| person.id | badge.bid | person.first_name | person.last_name | person.type | person_user.description |
除person_user.description外,每个字段都是唯一的。每条记录最多可包含40个不同的person_user.description字段。问题是,我得到重复,因为记录有多个描述条目。你能帮我把这些额外的副本放在同一个记录行上,如:
| person.id | badge.bid | person.first_name | person.last_name | person.type | 1 | 2 | 3 | 4 | 5 |等。| 40 |
以下是查询:
SELECT person.id,
badge.bid,
person.first_name,
person.last_name,
person.type,
person_user.description
FROM person,
badge,
person_user
WHERE person.id = badge.id
AND person.id = person_user.person_id
AND badge.bid NOT LIKE "111%"
AND badge.access_date >= 20130401
GROUP BY person.id,
badge.bid,
person.first_name,
person.last_name,
person.type,
person_user.description
ORDER BY person.id
答案 0 :(得分:0)
您可以创建一个标量表,使用INSERT INTO SELECT和UNION填充它,然后从标量表中执行SELECT DISTINCT。
例如:
DECLARE @temptable table (col1 int, col2 int, etc...)
INSERT INTO @temptable
SELECT col1, col2
FROM table1
WHERE condition=TRUE
UNION
SELECT col1, col2
FROM table2
WHERE condition=TRUE
SELECT DISTINCT col1, col2
FROM @temptable
答案 1 :(得分:0)
如果重复是您唯一的问题,快速解决方法就是按ID进行分组。