T-SQL查询在一行中获取数据,其中多行具有相似的过滤器

时间:2018-06-19 08:54:39

标签: sql sql-server

我们有一张桌子,其中我有2行,类似的文件没有。和行号。其中我想要一行中的值,在其中我可以看到其他行的某些值。

原始数据集

如屏幕上所附,我有文件号。如果我需要来自第二行的值看起来像第二个截图,那么两行中的行号是相同的。

结果图片应为:

2 个答案:

答案 0 :(得分:0)

您可以使用基于GST Component或Entry_no的row_number()函数定义row_numbers,因为有三种类型的GST CGST-SGST-IGST而另一种是UGST,它与任何联合领域相关

select max(case when entryno = 1 then 1 end) as Entry_no, doc,
       max(case when entryno = 1 then GSTComp end) as GSTComp1,
       max(case when entryno = 1 then [GST%] end) as [GST%1],
       max(case when entryno = 1 then GSTAmt end) as GSTAmt1,
       . . . 
       max(case when entryno = 3 then GSTAmt end) as GSTComp3
from (select *,  row_number() over (partition by doc order by entryno) as seq
      from table
     ) t
group by doc; 

答案 1 :(得分:0)

SELECT 
          t1.Entry_no
        , t1.doc
        , t1.GSTComp
        , t1.GST%
        , t1.GSTAmt
        , t2.GSTComp as t2.GSTComp2
        , t2.GSTAmt as t2.GSTAmt2
FROM table t1 INNER JOIN table t2 
ON t1.doc = t2.doc and t1.lin = t2.lin

尝试此查询