我正试图从中得到
tPeople
名称
爱丽丝
鲍勃
tAnimals
名字动物
爱丽丝猫
爱丽丝猫
鲍勃·马
鲍勃·狗
对此
Alice“ Cat * 2”
鲍勃·“马,狗”
到目前为止,我有一个对动物进行分组和计数的中间表
tGrouped
名字动物记号
爱丽丝猫2
鲍勃狗1
鲍勃·马1
如果我跑步
SELECT Name, Animals=STUFF((
SELECT N', '+animal+'*'+tally FROM tgrouped as g
WHERE g.Name = p.Name
FOR XML PATH(''), TYPE).value(N'.[1]', N'varchar(max)'), 1, 2, N'')
FROM tpeople as p
我明白了
动物名字
爱丽丝猫* 2
鲍伯狗* 1,马* 1
有什么办法可以跳过中间表?还有什么方法不显示计数结果为1?
答案 0 :(得分:1)
您不需要中间表。您可以只在查询中进行计算。对于第二个,您可以调整逻辑:
WITH grouped as (
SELECT a.name, a.animal, COUNT(*) as cnt
FROM tAnimals a
GROUP BY a.name, a.animal
)
SELECT Name,
STUFF((SELECT (CASE WHEN cnt = 1 THEN N', ' + animal
ELSE CONCAT(N', ', animal, '*', cnt)
END)
FROM grouped g
WHERE p.Name = g.Name
FOR XML PATH(''), TYPE
).value(N'.[1]', N'varchar(max)'
), 1, 2, N''
) as animals
FROM tpeople p;
答案 1 :(得分:0)
与戈登类似的方法,但没有CTE:
t)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/tools/convert.py", line 954, in convert_xml_import
obj.parse(doc.getroot())
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/tools/convert.py", line 847, in parse
self._tags[rec.tag](self.cr, rec, n)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/tools/convert.py", line 814, in _tag_record
id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/addons/base/ir/ir_model.py", line 960, in _update
res_id = model_obj.create(cr, uid, values, context=context)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/addons/base/ir/ir_ui_view.py", line 102, in create
return super(osv.osv, self).create(cr, uid, values, context)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/osv/orm.py", line 4471, in create
self._validate(cr, user, [id_new], context)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130301_002301-py2.6.egg/openerp/osv/orm.py", line 1544, in _validate
raise except_orm('ValidateError', '\n'.join(error_msgs))
except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')