TSQL-选择具有相同IS的值

TSQL-选择具有相同IS的值,tsql,Tsql,有这样的观点: 记录“NDocumento”仅按设计填充在事务的第一行。这些行由作为ID的列“NMov”分组 因为这是一个视图,所以我想通过SELECT语句用第一个事务中包含的对应值填充每个空“NDocumento”记录 正如您在图片中看到的,这是MS-SQL Server 2008,因此缺少滞后使游戏更难 我非常感谢您的帮助 谢谢试试这个: SELECT T1.NDocumento , T2.NMov , T2.NRiga -- , T2. Re

有这样的观点:

记录“NDocumento”仅按设计填充在事务的第一行。这些行由作为ID的列“NMov”分组

因为这是一个视图,所以我想通过SELECT语句用第一个事务中包含的对应值填充每个空“NDocumento”记录

正如您在图片中看到的,这是MS-SQL Server 2008,因此缺少滞后使游戏更难

我非常感谢您的帮助

谢谢

试试这个:

SELECT
        T1.NDocumento
    ,   T2.NMov
    ,   T2.NRiga
--  ,   T2. Rest of the fields      
FROM    NDocumentoTable T1
JOIN    NDocumentoTable T2  ON  T2.NMov = T1.NMov
WHERE   T1.NRiga = 1
我在NMov的分区上使用了LAG(),根据您的数据进行调整。您可以根据需要更改分区。逻辑是,如果给定分区的NDocument为空,则获取上一个值

CREATE TABLE myTable_1
  (
   NMov int
  ,NRiga int 
  ,CodiceAngrafica varchar(100)
  ,Causale varchar(100)
  ,DateRegistration date
  ,DateDocumented date
  ,NDocument varchar(100)
  )

 INSERT INTO  myTable_1  VALUES (5133, 1, '', 'V05', '01/14/2021', '01/14/2021', 'VI-2100001')
   ,(5133, 2, '', 'V05', null, null, '')
   ,(5134, 1, '', 'V05', '01/14/2021', '01/14/2021', 'VI-2100002')
   ,(5134, 2, '', 'V05', null, null, '')


  SELECT 
    NMov
   ,NRiga 
   ,CASE WHEN ISNULL(NDocument,'') = '' 
        THEN LAG(NDocument) OVER  (PARTITION BY NMov,Causale  ORDER BY NMov) 
    ELSE NDocument END AS [NDocument]  
 FROM myTable_1

请阅读一些改进问题的技巧。请编辑您的问题,将所有相关信息作为文本包含在内。否则,您可能会得到一张稍微倾斜的查询照片作为答案。