Refrence:
sys.dm_db_missing_index_details (Transact-SQL) - SQL Server | Microsoft Learn
Sample SQL:
Requirement: Delete with Not exsits join in where condition
DELETE ITM FROM InventItemInventSetup ITM
WHERE NOT EXISTS (SELECT 1 FROM INVENTTABLE IT WHERE IT.DataAreaId = ITM.DataAreaId
AND IT.ITEMID = ITM.ITEMID)
AND ITM.DATAAREAID in ('USMF')
STRING_AGG
SQL Query:
select STRING_AGG(erc.Code, ';') as ProductLine From EcoResCategory erc
join EcoResProductCategory erpc
on erc.RecId = erpc.Category
join INVENTTABLE it
on erpc.Product = it.PRODUCT
where it.ITEMID = 'TST702' and erc.Code != '' and it.DATAAREAID = 'USMF'
Output:
2;7;13;G;9;3;Z;11;17;D;B;F;8;6;1;05
Execute:
Execute ('
Declare @val Varchar(MAX)
Select @val = COALESCE(@val + '','' + erc.Code, erc.Code)
From EcoResCategory erc
join EcoResProductCategory erpc
on erc.RecId = erpc.Category
join INVENTTABLE it
on erpc.Product = it.PRODUCT
where it.ITEMID = 'TST702' and erc.Code != '' and it.DATAAREAID = 'USMF'
Group by erc.Code order by erc.Code asc
Select @val')
COALESCE
Declare @val Varchar(MAX)
Select @val = COALESCE(@val + ';' + erc.Code, erc.Code)
From EcoResCategory erc
join EcoResProductCategory erpc
on erc.RecId = erpc.Category
join INVENTTABLE it
on erpc.Product = it.PRODUCT
where it.ITEMID = 'TST702' and erc.Code != '' and it.DATAAREAID = 'USMF'
Group by erc.Code order by erc.Code asc
Select @val
Query:
SELECT * FROM
(
SELECT ROW_NUMBER () OVER (ORDER BY RecId) AS RowNum, * FROM SALESTABLE
) sub
WHERE RowNum = 9
Subscribe to Event handler.
[SubscribesTo(classStr(RetailCDXSeedDataBase), delegateStr(RetailCDXSeedDataBase, registerCDXSeedDataExtension))]
public static void RetailCDXSeedDataBase_registerCDXSeedDataExtension(str originalCDXSeedDataResource, List resources)
{
if (originalCDXSeedDataResource == resourceStr(RetailCDXSeedDataAX7))
{
resources.addEnd(resourceStr(SAN_SalesOrderClassResource));
resources.addEnd(resourceStr(smmBusRelSectorTableResource));
}
}
Create D365FO resource (SAN_SalesOrderClassResource) for new table.
Resource content: XML
<RetailCdxSeedData ChannelDBMajorVersion="7" ChannelDBSchema="ext" Name="AX7">
<Subjobs>
<Subjob Id="SAN_SalesOrderClass" TargetTableSchema="ext" AxTableName="SAN_SalesOrderClass">
<ScheduledByJobs>
<ScheduledByJob>1140</ScheduledByJob>
</ScheduledByJobs>
<AxFields>
<Field Name="SALESORDERCLASS"/>
<Field Name="MAXQTY"/>
<Field Name="AVAILABLEFROM"/>
<Field Name="AVAILABLETO"/>
<Field Name="SOALLOCPRIORITY"/>
<Field Name="PAYMTERMID"/>
<Field Name="HOLDCODE"/>
<Field Name="RECID"/>
<Field Name="RECVERSION"/>
<Field Name="PARTITION"/>
</AxFields>
</Subjob>
</Subjobs>
</RetailCdxSeedData>
//Query to Fetch Related information based on transaction type and tagged Masters (Customer/Vendor) from
Posted Sales Tax
1. Type (Customer or vendor or ledger)
2. Identification (Customer or vendor account name or Voucher entries text)
//These columns also be converted to Computed column (T-SQL) in view.
Query:
CAST
((SELECT TOP (1) CAST((CASE WHEN tt.Voucher =
(SELECT TOP (1) ct.Voucher
FROM CUSTTRANS AS ct
WHERE ct.VOUCHER = tt.VOUCHER AND ct.TRANSDATE = tt.TRANSDATE AND ct.DATAAREAID = tt.DATAAREAID) THEN 'Customer' ELSE CASE WHEN tt.Voucher =
(SELECT TOP (1) vt.Voucher
FROM VendTrans AS vt
WHERE vt.VOUCHER = tt.VOUCHER AND vt.TRANSDATE = tt.TRANSDATE AND vt.DATAAREAID = tt.DATAAREAID) THEN 'Vendor' ELSE 'Ledger' END END) AS NVARCHAR(10)) AS Expr1
FROM dbo.TAXTRANS AS tt
WHERE (RECID = T1.RECID)) AS NVARCHAR(60)) AS TYPE,
CAST
((SELECT TOP (1) dpt.NAME
FROM dbo.CUSTTRANS AS ct INNER JOIN
dbo.CUSTTABLE AS ctab ON ctab.ACCOUNTNUM = ct.ACCOUNTNUM AND ct.DATAAREAID = ctab.DATAAREAID INNER JOIN
dbo.DIRPARTYTABLE AS dpt ON dpt.RECID = ctab.PARTY
WHERE (ct.VOUCHER = T1.VOUCHER) AND (ct.TRANSDATE = T1.TRANSDATE) AND (ct.DATAAREAID = T1.DATAAREAID)
UNION ALL
SELECT TOP (1) dpt.NAME
FROM dbo.VENDTRANS AS vt INNER JOIN
dbo.VENDTABLE AS vtab ON vtab.ACCOUNTNUM = vt.ACCOUNTNUM AND vt.DATAAREAID = vtab.DATAAREAID INNER JOIN
dbo.DIRPARTYTABLE AS dpt ON dpt.RECID = vtab.PARTY
WHERE (vt.VOUCHER = T1.VOUCHER) AND (vt.TRANSDATE = T1.TRANSDATE) AND (vt.DATAAREAID = T1.DATAAREAID)
UNION ALL
SELECT TOP (1) gjae.TEXT
FROM dbo.GENERALJOURNALENTRY AS gje INNER JOIN
dbo.GENERALJOURNALACCOUNTENTRY AS gjae ON gjae.GENERALJOURNALENTRY = gje.RECID
WHERE (NOT EXISTS
(SELECT TOP (1) VOUCHER
FROM dbo.CUSTTRANS AS ct2
WHERE (VOUCHER = T1.VOUCHER) AND (TRANSDATE = T1.TRANSDATE) AND (DATAAREAID = T1.DATAAREAID))) AND (NOT EXISTS
(SELECT TOP (1) VOUCHER
FROM dbo.VENDTRANS AS vt2
WHERE (VOUCHER = T1.VOUCHER) AND (TRANSDATE = T1.TRANSDATE) AND (DATAAREAID = T1.DATAAREAID))) AND (gje.SUBLEDGERVOUCHER = T1.VOUCHER) AND (gje.ACCOUNTINGDATE = T1.TRANSDATE) AND
(gje.SUBLEDGERVOUCHERDATAAREAID = T1.DATAAREAID)) AS NVARCHAR(100)) AS IDENTIFICATION
FROM dbo.TAXTRANS AS T1
Connection connection;
Statement statement;
SqlStatementExecutePermission permission;
str deleteStm;
if (!Global::isSystemAdministrator())
{
error("@SYS130561");
return;
}
connection = new Connection();
connection.ttsbegin();
statement = connection.createStatement();
deleteStm = '(SELECT RECID FROM ' + ReleaseUpdateDB::backendTableName(tableNum(Batch)) + ' WHERE GROUPID = \'' + 'TT_BT' + '\')';
deleteStm = 'DELETE FROM ' + ReleaseUpdateDB::backendTableName(tableNum(BatchConstraints)) + ' WHERE BATCHID IN ' + deleteStm +
' OR DEPENDSONBATCHID IN ' + deleteStm + ';';
permission = new SqlStatementExecutePermission(deleteStm);
permission.assert();
statement.executeUpdate(deleteStm);
statement.close();
CodeAccessPermission::revertAssert();
statement = connection.createStatement();
deleteStm = 'DELETE FROM ' + ReleaseUpdateDB::backendTableName(tableNum(Batch)) + ' WHERE GROUPID = \'' + 'TT_BT' + '\';';
permission = new SqlStatementExecutePermission(deleteStm);
permission.assert();
statement.executeUpdate(deleteStm);
statement.close();
CodeAccessPermission::revertAssert();
statement = connection.createStatement();
deleteStm = 'DELETE FROM ' + ReleaseUpdateDB::backendTableName(tableNum(BatchJobHistory)) + ' WHERE STATUS != \'' + 3 + '\';';
permission = new SqlStatementExecutePermission(deleteStm);
permission.assert();
statement.executeUpdate(deleteStm);
statement.close();
CodeAccessPermission::revertAssert();
connection.ttscommit();
connection = null;
CREATE TABLE TSTRowCounts(RowCount1 BIGINT,TableName VARCHAR(128))
EXEC sp_MSForEachTable 'INSERT INTO TSTRowCounts
SELECT COUNT_BIG(*) AS RowCount1,
''?'' as TableName FROM ?'
SELECT top 100 TableName, RowCount1 FROM TSTRowCounts ORDER BY RowCount1 DESC
select * from TSTRowCounts
where RowCount1 >100000
class GetCategoryLevels
{
public static void main(Args _args)
{
// TOP to BOTTOM hierarchy level data
void loopchild(RefRecId _recId)
{
EcoResCategory ecoResCategoryChk, ecoResCategoryChild;
while select ecoResCategoryChk
where ecoResCategoryChk.ParentCategory == _recId
{
//Child query insert to table Write ur logic
Info(ecoResCategoryChk.Name);
ecoResCategoryChild.clear();
select firstonly ecoResCategoryChild
where ecoResCategoryChild.ParentCategory == ecoResCategoryChk.RecId;
if(ecoResCategoryChild)
{
loopchild(ecoResCategoryChild.ParentCategory);
}
}
}
EcoResCategory ecoResCategory;
EcoResProductCategory ecoResProductCategory, ecoResProductCategoryCHk;
RefRecId parentCategory;
select firstonly ecoResCategory
where ecoResCategory.Name == "Refrigeration";
parentCategory = EcoResCategory.RecId;
if(parentCategory)
{
//Parent query insert - Write ur logic
Info(ecoResCategory.Name);
loopchild(parentCategory);
}
}
}
Insert table data from one DB to another DB SQL script
SQL 1:
INSERT INTO <Target DB>.dbo.<Table Name>
SELECT *
FROM <Source DB>.dbo.<Table Name>
where <Source DB>.dbo.<Table Name>.<Table field name>=
'<values>'
SQL 2:
INSERT INTO [target
db].[dbo].[table] (<columnA>,<columnB>,…)
SELECT
<columnA>,<columnB>,…
FROM [source
db].[dbo].[table]
| Timezone description | TimeZone | TZId |
|---|---|---|
| (GMT-12:00) International Date Line West | 24 | 24001 |
| (GMT-11:00) Midway Island, Samoa | 65 | 65001 |
| (GMT-10:00) Hawaii | 39 | 39001 |
| (GMT-09:00) Alaska | 2 | 2001 |
| (GMT-08:00) Pacific Time (US & Canada) | 58 | 58001 |
| (GMT-08:00) Tijuana, Baja California | 59 | 59001 |
| (GMT-07:00) Arizona | 75 | 75001 |
| (GMT-07:00) Mountain Time (US & Canada) | 47 | 47001 |
| (GMT-07:00) Chihuahua, La Paz, Mazatlan | 48 | 48001 |
| (GMT-06:00) Central America | 15 | 15001 |
| (GMT-06:00) Central Time (US & Canada) | 21 | 21001 |
| (GMT-06:00) Guadalajara, Mexico City, Monterrey | 22 | 22001 |
| (GMT-06:00) Saskatchewan | 11 | 11001 |
| (GMT-05:00) Bogota, Lima, Quito, Rio Branco | 63 | 63001 |
| (GMT-05:00) Eastern Time (US & Canada) | 29 | 29001 |
| (GMT-05:00) Indiana (East) | 74 | 74001 |
| (GMT-04:00) Atlantic Time (Canada) | 6 | 6001 |
| (GMT-04:00) La Paz | 64 | 64001 |
| (GMT-04:00) Manaus | 17 | 17001 |
| (GMT-04:00) Santiago | 57 | 57001 |
| (GMT-04:30) Caracas | 85 | 85001 |
| (GMT-03:30) Newfoundland | 54 | 54001 |
| (GMT-03:00) Brasilia | 28 | 28001 |
| (GMT-03:00) Buenos Aires, Georgetown | 62 | 62001 |
| (GMT-03:00) Greenland | 36 | 36001 |
| (GMT-03:00) Montevideo | 83 | 83001 |
| (GMT-02:00) Mid-Atlantic | 45 | 45001 |
| (GMT-01:00) Azores | 10 | 10001 |
| (GMT-01:00) Cape Verde Is. | 12 | 12001 |
| (GMT) Casablanca, Monrovia, Reykjavik | 37 | 37001 |
| (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, Londo | 35 | 35001 |
| (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna | 79 | 79001 |
| (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Pragu | 18 | 18001 |
| (GMT+01:00) Brussels, Copenhagen, Madrid, Paris | 60 | 60001 |
| (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb | 19 | 19001 |
| (GMT+01:00) West Central Africa | 78 | 78001 |
| (GMT+02:00) Amman | 43 | 43001 |
| (GMT+02:00) Athens, Bucharest, Istanbul | 38 | 38001 |
| (GMT+02:00) Beirut | 46 | 46001 |
| (GMT+02:00) Minsk | 27 | 27001 |
| (GMT+02:00) Cairo | 30 | 30001 |
| (GMT+02:00) Harare, Pretoria | 68 | 68001 |
| (GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius | 33 | 33001 |
| (GMT+02:00) Jerusalem | 42 | 42001 |
| (GMT+02:00) Windhoek | 51 | 51001 |
| (GMT+03:00) Baghdad | 5 | 5001 |
| (GMT+03:00) Kuwait, Riyadh | 3 | 3001 |
| (GMT+03:00) Moscow, St. Petersburg, Volgograd | 61 | 61001 |
| (GMT+03:00) Nairobi | 25 | 25001 |
| (GMT+03:00) Tbilisi | 34 | 34001 |
| (GMT+03:30) Tehran | 41 | 41001 |
| (GMT+04:00) Abu Dhabi, Muscat | 4 | 4001 |
| (GMT+04:00) Baku | 9 | 9001 |
| (GMT+04:00) Caucasus Standard Time | 84 | 84001 |
| (GMT+04:00) Yerevan | 13 | 13001 |
| (GMT+04:30) Kabul | 1 | 1001 |
| (GMT+05:00) Ekaterinburg | 31 | 31001 |
| (GMT+05:00) Islamabad, Karachi, Tashkent | 80 | 80001 |
| (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi | 40 | 40001 |
| (GMT+05:30) Sri Jayawardenepura | 69 | 69001 |
| (GMT+05:45) Kathmandu | 52 | 52001 |
| (GMT+06:00) Almaty, Novosibirsk | 50 | 50001 |
| (GMT+06:00) Astana, Dhaka | 16 | 16001 |
| (GMT+06:30) Yangon (Rangoon) | 49 | 49001 |
| (GMT+07:00) Bangkok, Hanoi, Jakarta | 66 | 66001 |
| (GMT+07:00) Krasnoyarsk | 56 | 56001 |
| (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi | 23 | 23001 |
| (GMT+08:00) Irkutsk, Ulaan Bataar | 55 | 55001 |
| (GMT+08:00) Kuala Lumpur, Singapore | 67 | 67001 |
| (GMT+08:00) Perth | 77 | 77001 |
| (GMT+08:00) Taipei | 70 | 70001 |
| (GMT+09:00) Osaka, Sapporo, Tokyo | 72 | 72001 |
| (GMT+09:00) Seoul | 44 | 44001 |
| (GMT+09:00) Yakutsk | 82 | 82001 |
| (GMT+09:30) Adelaide | 14 | 14001 |
| (GMT+09:30) Darwin | 7 | 7001 |
| (GMT+10:00) Brisbane | 26 | 26001 |
| (GMT+10:00) Canberra, Melbourne, Sydney | 8 | 8001 |
| (GMT+10:00) Guam, Port Moresby | 81 | 81001 |
| (GMT+10:00) Hobart | 71 | 71001 |
| (GMT+10:00) Vladivostok | 76 | 76001 |
| (GMT+11:00) Magadan, Solomon Is., New Caledonia | 20 | 20001 |
| (GMT+12:00) Auckland, Wellington | 53 | 53001 |
| (GMT+12:00) Fiji, Kamchatka, Marshall Is. | 32 | 32001 |
| (GMT+13:00) Nuku’alofa | 73 | 73001 |
|
|
|
[ExtensionOf(classStr(InventUpd_Reservation))] final class InventUpd_ReservationCls_SAN_Extension { void updateNow() { if(mo...