비교한 두 행(모두 다른 ID)&확인하면 그 열의 값은 정확히 동일합니다. 모든 행&열에 있는 동일한 테이블

0

질문

나는 테이블이라"명단"과 이 표에서 나는 22 개의 열이 있습니다.

고 싶은 쿼리와 비교하는 모든 2 개의 행의 특정 테이블에 목적으로 확인하려면 각 열의 값이 있는 2 개의 행이 정확히 동일합니다. ID 열 항상 다른 값을 각 행은 그래서 나는 포함되지 않습니다 ID 열을 비교하고 있다. 나는 그냥 사용을 참조하는 무엇을 행 사용되는 것에 대한 비교입니다.

면 모두 열 값이 동일하다: 하나는 그냥 아무것도 표시되지 않습니다(나이 한)또는 그냥 돌려 2 행으로 그것입니다.

이 있는 경우 몇 가지 열 값이 동일하지 않습니다: 하나는 그 열 이름만 또는 디스플레이 모두 열 이름과 값을(나이 한).

예제:

명부 테이블:

ID 이름 시간
1 N1 0900
2 N1 0801

출력:

ID 시간
1 0900
2 0801

표시"시간"

참고:실제로 나는 괜찮아요 뭐든 결과 또는 출력할 수 있는 만큼 오래 알고있는 어떤 방식으로 2 개의 행이 동일하지 않습니다.

은 무엇이 가능한 방법으로 이를 위해서는 SQL Server?

내가 사용하고 Microsoft SQL Server 관리 Studio18,Microsoft SQL Server2019-15.0.2080.9

sql sql-server tsql
2021-11-24 03:55:43
1

최고의 응답

3

다음을 시도하십시오 솔루션에 따라 아이디어의 존 Cappelletti. 모든 신용가셨습니다.

SQL

-- DDL and sample data population, start
DECLARE @roster TABLE (ID INT PRIMARY KEY, NAME VARCHAR(10), TIME CHAR(4));
INSERT IGNORE INTO @roster (ID, NAME, TIME) VALUES
(1,'N1','0900'),
(2,'N1','0801')
-- DDL and sample data population, end

DECLARE @source INT = 1
    , @target INT = 2;

SELECT id AS source_id, @target AS target_id
      ,[key] AS [column]
      ,source_Value = MAX( CASE WHEN Src=1 THEN Value END)
      ,target_Value = MAX( CASE WHEN Src=2 THEN Value END)
FROM (
        SELECT Src=1
              ,id 
              ,B.*
         FROM @roster AS A
         CROSS APPLY ( SELECT [Key]
                             ,Value
                       FROM OpenJson( (SELECT A.* For JSON Path,Without_Array_Wrapper,INCLUDE_NULL_VALUES)) 
                     ) AS B
        WHERE id=@source
        UNION ALL
        SELECT Src=2
              ,id = @source
              ,B.*
         FROM @roster AS A
         CROSS APPLY ( SELECT [Key]
                             ,Value
                       FROM OpenJson( (SELECT A.* For JSON Path,Without_Array_Wrapper,INCLUDE_NULL_VALUES)) 
                     ) AS B
         WHERE id=@target
      ) AS A
GROUP BY id, [key]
HAVING MAX(CASE WHEN Src=1 THEN Value END)
     <> MAX(CASE WHEN Src=2 THEN Value END)
    AND [key] <> 'ID'   -- exclude this PK column
ORDER BY id, [key];

출력

+-----------+-----------+--------+--------------+--------------+
| source_id | target_id | column | source_Value | target_Value |
+-----------+-----------+--------+--------------+--------------+
|         1 |         2 | TIME   |         0900 |         0801 |
+-----------+-----------+--------+--------------+--------------+
2021-11-24 06:12:31

었고 이 작업을 확인하고 매우 혼란에[key]부분입니다. 나는 무엇이었어'키'와 어떻게 해야 이 정의될 사용하거나?
Lars

{]키의 일부 JSON. (1)키(2)값이며,(3)유형,세들에 의해 자동으로 생성된 JSON. 여기에서 확인해 보십시오: bertwagner.com/posts/the-ultimate-sql-server-json-cheat-sheet
Yitzhak Khabinsky

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................