我必须加入两个表(比如说A和B)。现在需要搜索字段的A值是否存在于B的特定字段中。
例如CLASS是A表的字段,其值为PROD。现在SCHOOL是任何记录的B表的字段,其中值为PRAD,PROD,PRUD。然后,B的记录以及A的记录将在查询1中返回。
A的PROD值以外的记录将在查询2中返回
SERVER :: SQL SERVER 2008
答案 0 :(得分:1)
您的数据结构确实存在问题,因为您要在列中存储值列表。 SQL有这种存储列表的好方法 - 它被称为表,而不是字符串列。您应该有一个单独的联结/关联表,每个实体和每个值一行,一个更规范化的数据结构。
但是,有时候,我们无法修复我们给出的数据。如果是这样,您可以使用like
:
select
from tablea a join
tableb b
on ',' + b.school + ',' like '%,' + a.class + ',%';
请注意两边使用分隔符。这可以防止A
与ABC
匹配。
答案 1 :(得分:0)
您的第一个查询是........
select * from tbl_A, tbl_B Where tbl_A.CLASS = tbl_B.SCHOOL
第二个问题是......
select * from tbl_A, tbl_B Where tbl_A.CLASS <> tbl_B.SCHOOL
答案 2 :(得分:0)
您可以尝试以下查询
SELECT
* FROM (SELECT [name]
,[Amount]
,[unit] FROM [group_by_tbl]) P PIVOT (SUM([Amount]) FOR [unit] IN (A,B)) AS piv
答案 3 :(得分:0)
您可以尝试以下查询
SELECT
* FROM (SELECT [name]
,[Amount]
,[unit] FROM [group_by_tbl]) P PIVOT (SUM([Amount]) FOR [unit] IN (A,B)) AS piv