基于其他两个表值插入到表中;SQL server
有人能指导我如何在不使用Contains条件的情况下获得所需的输出吗基于其他两个表值插入到表中;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
我已尝试使用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
列也是如此。