Sql 如何与条件自联接并添加上一列?
我有这个疑问Sql 如何与条件自联接并添加上一列?,sql,postgresql,Sql,Postgresql,我有这个疑问 SELECT "os_bulan_lalu", "os_update" FROM ( SELECT (SELECT "OUTSTANDING" FROM tbl_nominatif_hasil WHERE "BUSS_DATE"='2018-11-30' AND "COLLDET"='1') as os_bulan_lalu, (SELECT "OUTSTANDING" FROM tbl_nominatif
SELECT
"os_bulan_lalu",
"os_update"
FROM (
SELECT
(SELECT "OUTSTANDING" FROM tbl_nominatif_hasil
WHERE "BUSS_DATE"='2018-11-30' AND "COLLDET"='1')
as os_bulan_lalu,
(SELECT "OUTSTANDING" FROM tbl_nominatif_hasil
WHERE "BUSS_DATE"='2018-12-17' AND "COLLDET"='2A')
as os_update
) AS temp
但是这个查询在我运行时是错误的,我希望得到如下结果
os_bulan_lalu | os_update
232323 | 21424
343242 | 432
23432 | 23432
234324 | 234324
234324 | 23423423
我的意思是os_bulan_lalu是BUSS_DATE='2018-11-30'和COLLDET='1',os_update是BUSS_DATE='2018-12-17'和COLLDET='2A'
错误是
[Err]错误:用作表达式的子查询返回多行
我想得到这样的结果
os_bulan_lalu | os_update
232323 | 21424
343242 | 432
23432 | 23432
234324 | 234324
234324 | 23423423
也许像这样的事情可以奏效
SELECT A.OUTSTANDINGAS os_bulan_lalu, B.OUTSTANDINGAS os_update
FROM (SELECT OUTSTANDING, ROW_NUMBER() OVER ( ORDER BY OUTSTANDING) AS row_num
FROM tbl_nominatif_hasil
WHERE BUSS_DATE = '2018-11-30' AND COLLDET = '1') AS A
JOIN (SELECT OUTSTANDING, ROW_NUMBER() OVER ( ORDER BY OUTSTANDING) as row_num
FROM tbl_nominatif_hasil
WHERE BUSS_DATE = '2018-12-17' AND COLLDET = '2A') AS B ON A.row_num = B.row_num
它假设两个查询中的行数相等,但在不了解任何输入的情况下,很难给出更好的答案
更新如果子查询返回不同数量的行,最好进行完整的外部联接,而不是联接如果您可以将输入数据添加为格式化文本,这将非常有用。@Tony94数据的编号类似于32422141,表中有列buss_date,colldet表示条件,,,我的意思是其中buss_date='date'和colldet='1',,,在我的问题中,这是可能的??querry是错误吗?需要解释吗?从tbl_Nammitf_hasil中选择未完成项,其中BUSS_DATE='2018-11-30'和COLLDET='1'作为os_bulan_lalu,从tbl_Nammitf_hasil中选择未完成项,其中BUSS_DATE='2018-12-17'和COLLDET='2A'作为os_update作为临时[错误]错误:用作子查询的子查询返回多行expression@willy请使用示例输入和预期输出编辑您的问题。