基于其他两个表值插入到表中;SQL server

基于其他两个表值插入到表中;SQL server,sql,sql-server,tsql,Sql,Sql Server,Tsql,有人能指导我如何在不使用Contains条件的情况下获得所需的输出吗 我已尝试使用Unpivot、Case语句和Contains条件。但无法实现所需的输出。您可以使用Case获得所需的结果: SELECT t1.Number, [First] = CASE WHEN t1.AAA >= 5 THEN 'Yes' WHEN t1.AAB >= 5 THEN 'Yes' WH

有人能指导我如何在不使用Contains条件的情况下获得所需的输出吗


我已尝试使用Unpivot、Case语句和Contains条件。但无法实现所需的输出。

您可以使用
Case
获得所需的结果:

SELECT
    t1.Number,
    [First] =   
        CASE 
            WHEN t1.AAA >= 5 THEN 'Yes'
            WHEN t1.AAB >= 5 THEN 'Yes'
            WHEN t1.AAC >= 5 THEN 'Yes'
            WHEN t1.AAD >= 5 THEN 'Yes'
            ELSE 'No'
        END,
    [Second] = 
        CASE 
            WHEN t2.MMP >= 15 THEN 'Yes'
            WHEN t2.MMQ >= 15 THEN 'Yes'
            WHEN t2.MMA >= 15 THEN 'Yes'
            WHEN t2.MMC >= 15 THEN 'Yes'
            ELSE 'No'
        END
FROM BaseTable1 t1
INNER JOIN BaseTable2 t2
    ON t2.Number = t1.Number

你的设计不好。我建议您规范化数据,使其成为可
基表(数字、列、值)
尝试使用
大小写
表达式:

DECLARE @t1 TABLE(N INT, AAA MONEY, AAB MONEY, AAC MONEY, AAD MONEY)
DECLARE @t2 TABLE(N INT, MMP MONEY, MMQ MONEY, MMA MONEY, MMC MONEY)

INSERT INTO @t1 VALUES
(561, 5, 5.5, 6, 6.5),
(562, 3.5, 4, 3.6, 3)

INSERT INTO @t2 VALUES
(561, 10, 10, 13, 15),
(562, 12, 10, 9, 14)

SELECT t1.N, 
       CASE WHEN t1.AAA >= 5 OR t1.AAB >= 5 OR t1.AAC >= 5 OR t1.AAD >= 5 
            THEN 'Y' ELSE 'N' END AS First,
       CASE WHEN t2.MMP >= 15 OR t2.MMQ >= 15 OR t2.MMA >= 15 OR t2.MMC >= 15 
            THEN 'Y' ELSE 'N' END AS Second
FROM @t1 t1
JOIN @t2 t2 ON t1.N = t2.N
输出:

N   First   Second
561 Y       Y
562 N       N

您尝试的sql查询在哪里?如果可能,请更改表定义。当您想要计算或查询多个值时,例如它们是相同的“类型”值,它们应该存储在单个列中。所以基表1应该有三列
(Number,AA,Thing)
,每个数字存储4行
Thing
应包含当前已嵌入列名中的数据。对于基本表2和
MMx
列也是如此。