我试图比较两个表,SQL Server,以验证一些数据.我想从两个表中返回所有行,其中数据在一个或另一个中.从本质上讲,我想表明所有的差异.我需要检查三个数据,FirstName,LastName和Product.
我对SQL很新,似乎很多我发现的解决方案都让事情变得复杂.我不必担心NULL.
我开始尝试这样的事情:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
Run Code Online (Sandbox Code Playgroud)
我在进一步考虑这个问题时遇到了麻烦.
谢谢!
编辑:
根据@treaschf的回答,我一直在尝试使用以下查询的变体:
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
Run Code Online (Sandbox Code Playgroud)
但是当我知道td中至少有一行不在d中时,我一直得到0结果.
编辑:
好吧,我想我弄明白了.至少在我测试的几分钟内它似乎工作得很好.
SELECT [First Name], [Last Name]
FROM …
Run Code Online (Sandbox Code Playgroud) 假设我有像这样的pandas DataFrame:
>>> df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4],'value':[1,2,3,1,2,3,4,1,1]})
>>> df
id value
0 1 1
1 1 2
2 1 3
3 2 1
4 2 2
5 2 3
6 2 4
7 3 1
8 4 1
Run Code Online (Sandbox Code Playgroud)
我想为每个id获取一个包含前2条记录的新DataFrame,如下所示:
id value
0 1 1
1 1 2
3 2 1
4 2 2
7 3 1
8 4 1
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式在组内编号记录:
>>> dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
>>> dfN
id level_1 index value
0 1 0 0 1
1 1 1 1 2 …
Run Code Online (Sandbox Code Playgroud) 我知道要删除列,请使用df.drop('列名',轴= 1).有没有办法使用数字索引而不是列名删除列?
寻找优雅(或任何)解决方案将列转换为行.
这是一个例子:我有一个包含以下模式的表:
[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]
Run Code Online (Sandbox Code Playgroud)
以下是我想得到的结果:
[ID] [EntityId] [IndicatorName] [IndicatorValue]
Run Code Online (Sandbox Code Playgroud)
结果值将是:
1 1 'Indicator1' 'Value of Indicator 1 for entity 1'
2 1 'Indicator2' 'Value of Indicator 2 for entity 1'
3 1 'Indicator3' 'Value of Indicator 3 for entity 1'
4 2 'Indicator1' 'Value of Indicator 1 for entity 2'
Run Code Online (Sandbox Code Playgroud)
等等..
这有意义吗?您对在T-SQL中查看的位置以及如何完成它有什么建议吗?
有没有办法从熊猫系列中删除NaN值?我有一个系列可能有也可能没有NaN值,我想要删除所有NaN删除的系列副本.
维基百科说:
"在实践中,很少使用明确的右外连接,因为它们总是可以用左外连接替换,并且不提供额外的功能."
任何人都可以提供他们更喜欢使用正确表示法的情况,为什么?我想不出使用它的理由.对我来说,它永远不会让事情更清楚.
编辑:我是甲骨文老将制作新年决议,以便从(+)语法中脱离自己.我想做得对
SELECT C.id, C.name, json_agg(E) AS emails FROM contacts C
LEFT JOIN emails E ON C.id = E.user_id
GROUP BY C.id;
Run Code Online (Sandbox Code Playgroud)
例如,Postgres 9.3创建输出
id | name | emails
-----------------------------------------------------------
1 | Ryan | [{"id":3,"user_id":1,"email":"hello@world.com"},{"id":4,"user_id":1,"email":"again@awesome.com"}]
2 | Nick | [null]
Run Code Online (Sandbox Code Playgroud)
由于我使用LEFT JOIN,因此会出现没有右表匹配的情况,因此将空(null)值替换为右表列.因此,我将[null]
作为JSON聚合之一获得.
我如何忽略/删除null
所以[]
当右表列为空时我有一个空的JSON数组?
干杯!
我有users
json列的表details
.
我想获取所有用户记录,其中详细信息["email"]为空或电子邮件密钥不存在.
这不起作用:
SELECT users.* FROM users where details->'email' IS NOT NULL;
ERROR: operator does not exist: json -> boolean
我已经就此事做了一些研究,但还没有解决方案.我想得到的是视图中的列级依赖项.所以,假设我们有一个这样的表
create table TEST(
first_name varchar(10),
last_name varchar(10),
street varchar(10),
number int
)
Run Code Online (Sandbox Code Playgroud)
和这样的观点:
create view vTEST
as
select
first_name + ' ' + last_name as [name],
street + ' ' + cast(number as varchar(max)) as [address]
from dbo.TEST
Run Code Online (Sandbox Code Playgroud)
我想要的是得到这样的结果:
column_name depends_on_column_name depends_on_table_name
----------- --------------------- --------------------
name first_name dbo.TEST
name last_name dbo.TEST
address street dbo.TEST
address number dbo.TEST
Run Code Online (Sandbox Code Playgroud)
我已尝试过sys.dm_sql_referenced_entities
功能,但referencing_minor_id
视图总是为0.
select
referencing_minor_id,
referenced_schema_name + '.' + referenced_entity_name as depends_on_table_name,
referenced_minor_name as depends_on_column_name
from sys.dm_sql_referenced_entities('dbo.vTEST', 'OBJECT')
referencing_minor_id depends_on_table_name …
Run Code Online (Sandbox Code Playgroud) 我正在使用Postgres 9.0版本.我想在日期中添加几个月来计算新日期并在表格中更新.这里添加的月数将是整数变量.我的代码如下:
declare numberofmonths smallint = 5;
update salereg1 set expdate = current_date + interval cast(numberofmonths as text) month;
Run Code Online (Sandbox Code Playgroud)
上面的代码显示了转换时的语法错误.我不知道如何将numberofmonths
变量指定为文本..任何人都可以帮助我.我犯的错是什么..
sql ×6
pandas ×3
postgresql ×3
python ×3
sql-server ×3
json ×2
t-sql ×2
database ×1
dataframe ×1
right-join ×1
series ×1
top-n ×1
unpivot ×1