我想知道是否有按条件选择列的选项。
SQL查询是从表中获取2行,然后比较这两行的每个列值。
我希望所选列是具有不匹配值的列
select * (only column with different values)
from Account c
where c.DistributorID = "ID"
and c.AccountID = "ID" or c.AccountID = "ID"
******编辑************
这是我的第一个问题,很抱歉,如果我不清楚它..
(索引)---- AccountID ---- DistributorID ----名称---城市---乐趣
1 ---------- 12345 ------------- 2 ------------和------- NY --- ---- 5
2 45678 ---------- ----------- ------------- 2丹尼尔NY ----- ------ -6
我想创建一个查询,只选择和显示具有不同值的列,在本例中我将看到结果:
(索引)---- AccountID -------名称----好玩
---1--------12345-----------dan------5
--- 2 -------- ---------- 45678 ----丹尼尔6
您需要输入所有列。这意味着您的选择变为:
select column1,column2
如果要删除column1和column2相等的行,则查询将变为:
select Column1, Column2
from Account c
where c.DistributorID= "ID"and
c.AccountID = "ID" or c.AccountID = "ID"
AND Column1 != Column2
如果我理解你在寻找什么,那么你的解决方案可能会在动态sql中。如果您查看由表的object_id过滤的sys.columns,那么您将获得列的列表。如果使用该列表返回列名称,如果列名称的内容不匹配,则可以构造某些内容以返回该数据。
假设您将使用它来发现行之间的差异,我建议输出三列:列名,valueInRow1,valueInRow2作为更可读的结果集。请注意,这将是一个相当粗糙和复杂的TSQL,但不是一个简单的查询。
这里的技术作为单独的项目被很好地记录,尽管没有像这样整理。如果你完全陷入困境并且不知道从哪里开始那么请告诉我,我会帮你的。希望这足以让你走上一条道路。
我认为您正在寻找的是根据特定条件获取结果集中的值。如果是这种情况,那么CASE(双关语)可以帮助您解决问题:
select *, CASE c.AccountID
WHEN "ID1" THEN ColumnForID1
WHEN "ID2" THEN ColumnForID2
END
from Account c
where c.DistributorID= "ID"and c.AccountID in ("ID1", "ID2")