首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server循环查询

SQL Server循环查询
EN

Stack Overflow用户
提问于 2017-07-21 20:53:25
回答 1查看 57关注 0票数 0

我在sql server中制作了此视图,以组合多列的2条记录的值。但是这个解决方案的问题是,对于table2中的每一列,您都需要一个连接。我想知道是否可以使用循环和列号的动态变量来完成连接部分( table2中的列称为1、2、3、4、5……)table2的。

代码语言:javascript
复制
SELECT 
dbo.table1.lot_id AS lot,
dbo.table1.hybird_id AS hybrid,

concat( 
    LEFT( (SELECT dbo.table2.[1] FROM dbo.table2 WHERE dbo.table2.parentals_id = dbo.table1.parental_male_id AND dbo.table2.lot_id = dbo.table1.lot_id) , 1),  
    LEFT( (SELECT dbo.table2.[1] FROM dbo.table2 WHERE dbo.table2.parentals_id = dbo.table1.parental_female_id AND dbo.table2.lot_id = dbo.table1.lot_id) , 1)
) AS '1', 

--above concat x31 times more

FROM dbo.table2
INNER JOIN dbo.table1 ON dbo.table2.lot_id = dbo.table1.lot_id
GROUP BY dbo.table1.lot_id, dbo.table1.hybird_id, 
dbo.table1.parental_male_id, 
dbo.table1.parental_female_id

我尝试了一些方法,但都不起作用,有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-21 21:29:19

试着把它简化一点,有点

代码语言:javascript
复制
SELECT lot, hybrid, parental_male_id, parental_female_id
    concat(Left(m.[1],1), left(f.[1], 1)) AS [1] 
    --,.. 
FROM (
    SELECT dbo.table1.lot_id AS lot
        , dbo.table1.hybird_id AS hybrid
        , dbo.table1.parental_male_id
        , dbo.table1.parental_female_id
    FROM dbo.table2
    INNER JOIN dbo.table1 ON dbo.table2.lot_id = dbo.table1.lot_id
    GROUP BY dbo.table1.lot_id, dbo.table1.hybird_id, 
       dbo.table1.parental_male_id, 
       dbo.table1.parental_female_id
     ) t  
JOIN dbo.table2 m ON m.parentals_id = t.parental_male_id AND m.lot_id = lot)  
JOIN dbo.table2 f ON f.parentals_id = t.parental_female_id AND f.lot_id = lot) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45238221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档